Предположим, что вид Flask-Admin
ниже (примечание Я использую flask_wtf
не wtforms
). Я хотел бы загрузить файл csv
, а затем на model_change
, разобрать csv и сделать что-то в нем перед возвратом результата, который затем будет сохранен в модели. Тем не менее, я получаю ошибку: TypeError: coercing to Unicode: need string or buffer, FileField found
разобрать CSV в Flask-Admin/WTForms на model_change
from flask_wtf.file import FileField
class myView(ModelView):
[...]
def scaffold_form(self):
form_class = super(myView, self).scaffold_form()
form_class.csv = FileField('Upload CSV')
return form_class
def on_model_change(self, form, model):
csv = form.csv
csv_data = self.parse_file(csv)
model.csv_data = csv_data
def parse_file(self, csv):
with open(csv, 'rb') as csvfile:
data = csv.reader(csvfile, delimiter=',')
for row in data:
doSomething()
При доступе к csv.data
, я получить <FileStorage: u'samplefile.csv' ('text/csv')>
, но этот объект фактически не содержит данных в формате CSV в.