Я создаю простую динамическую form fields
, чтобы пользователь мог добавить свои поля формы, и все поля связаны с category
моделью. Я хочу, чтобы, когда пользователь выбирал category
с именем car
, то показывал им отношение fields
к этой машине.
моя структура:
class Category:
name = ...
class Field:
label = ...
category = ForeignKey(Category)
class FieldValue:
value = ...
field = ForeignKey(Field)
Моя проблема в том, как мне сгенерировать форму и как извлечь данные из form.cleaned_data
, чтобы я мог добавлять записи в модель FieldValue
. Я создал форму и она отлично работает для рендеринга с использованием __init__
. И я хочу получить данные из визуализированных полей формы.
моя форма:
class CategoryFieldsForm(forms.Form):
def __init__(self, category_id, *args, **kwargs):
super(CategoryFieldsForm, self).__init__(*args, **kwargs)
fields = Field.objects.filter(category_id=category_id)
for i in range(1, len(fields)):
for field in fields:
self.fields[field.slug] = forms.CharField()
def clean(self):
# how can i validate
def save(self):
print(self.cleaned_data)
# how can i save fields
мой взгляд:
def some_create_view(request, category_id):
if request.method == 'POST':
form = CategoryFieldsForm(category_id)
form.save()
form = CategoryFieldsForm(category_id)
return render(request, 'create.html', {'form': form})
При отправке формы CategoryFieldsForm
объект не имеет атрибута cleaned_data
отображается.