Я создаю конструктор форм для своего проекта. Он строит формы динамически в соответствии с полями, указанными в базе данных. Есть 3 таблицы: форма, поля формы и значения полей формы. Теперь я пытаюсь привязать данные из значений формы к полям формы. Он работает хорошо, например, так:
if (field.field_type == 'long_text'):
new_field = forms.CharField(label=field.label, initial = value, required=False, widget=forms.Textarea(attrs={'class': 'form-control'}))
Но это не работает для FileField:
new_field = forms.FileField(label=field.label, required = False, initial = initialData)
Насколько я понимаю, «исходные» данные должны быть в определенный формат: это должен быть объект с атрибутами url и name
Вот что я делаю:
try:
''' data is stored in JSON {url:'', name:''} format '''
valueData = json.loads(value)
initialData.initial = valueData['name']
initialData.url = valueData['url']
initialData.name = valueData['url']
except:
pass
new_field = forms.FileField(label=field.label, required = False, initial = initialData)
Форма все еще пуста. Нет флажка «очистить», нет URL для щелчка и «файл не выбран».
Что можно сделать, чтобы этот файл работал? Нужно ли имитировать файловое поле модели?