我使用modelformset_factory以相同的形式编辑Product
的多个实例:
ProductFormSet = modelformset_factory(Product, fields=('code', 'state'))
form_products = ProductFormSet()
效果很好。
但现在我需要在表单中显示Product
模型的其他字段,但仅适用于Product
的特定实例。我不确定它是否可以在Django中以简单的方式完成。是否可以使用modelformset_factory
?
答案 0 :(得分:3)
您可以在modelformset_factory中指定表单,因此创建一个模型表单(如果有的话,在forms.py中)覆盖__init__method以添加额外的字段。 我会将formsetfactory参数中的字段移动到表单
forms.py中的(假设你有一个)
class ProductForm(forms.ModelForm):
model = Product
def __init__(self, *args, **kwargs):
super(ProductForm, self).__init__(*args, **kwargs)
if 'instance' in kwargs :
product = kwargs['instance']
# to add an extra field, add something like this
self.fields['extra_field'] = forms.CharField(max_length=30)
class Meta:
fields = ('code', 'state')
然后使用form参数
将其传递给modelformset工厂ProductFormSet = modelformset_factory(Product, form=ProductForm )
form_products = ProductFormSet()