У меня есть ModelForm для объекта Product создан следующим образом:Как добавить форму в качестве атрибута поля в Джанго ModelForm
class ProductForm(forms.ModelForm):
compositon_choices = ((2L, u'Calcium (100mg)'), (3L, u'Iron (500mg)'))
composition_selection = forms.\
MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
choices=compositon_choices)
class Meta:
model = Product
fields = [
'title', 'title_de', 'title_es', 'upc', 'description',
'description_en_gb', 'description_de',
'description_es', 'is_discountable', 'structure',
'unit_type', 'product_concentration',]
widgets = {
'structure': forms.HiddenInput()
}
В приведенном выше примере, я расширил ModelForm с MultipleChoiceField путем добавления composition_selection поле (это работает):
Я хотел бы composoition_selection быть форма сама по себе, а не просто MultipleChoiceField:
class ProductComponentForm(forms.Form):
component_amount = forms.IntegerField()
component_name = forms.CharField()
, а затем вн end ModelForm этой новой формой:
class ProductForm(forms.ModelForm):
composition_selection = ProductComponentForm()
class Meta:
model = Product
fields = [
'title', 'title_de', 'title_es', 'upc', 'description',
'description_en_gb', 'description_de',
'description_es', 'is_discountable', 'structure',
'unit_type', 'product_concentration',]
widgets = {
'structure': forms.HiddenInput()
}
Но я не могу заставить это работать. Этот ProductForm, который я хочу создать, никогда не отображается, и ничего не появляется. Я что-то делаю неправильно или что-то не хватает? Каким будет лучший способ расширения ModelForm с помощью SubForm?
Что это за цель? Чтобы иметь 'component_amount' и' component_name' в 'ProductForm' как еще два поля? –
Продукт может иметь различные ProductComponents. Каждый ProductComponent имеет имя и сумму. Моя цель состояла бы в том, чтобы отобразить форму, в которой можно выбрать различные компоненты ProductComponents, и добавить сумму в целочисленное поле рядом с полем выбора. – matyas