我有以下模型:
class ModelA(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=100)
它在modelformset
中使用:
ModelAFormSet = generic_inlineformset_factory(
ModelA,
form=AddModelAForm, extra=2)
AddModelAForm
如下所示:
class AddModelAForm(forms.ModelForm):
selected = forms.BooleanField(required=False)
class Meta:
model = ModelA
fields = ['id']
,然后按照以下方式初始化:
formset = ModelAFormSet(
queryset = ModelA.objects.none(), initial=[{'id':16, 'selected': True}, {'id': 32, 'selected': False}])
我想在模板实例中使用,而不是实际的模型字段。像这样:
{{formset_form.id}}
{% with formset_form.instance as modelA %}
Name: {{modelA.name}}
Description: {{modelA.description}}
{{formset_form.selected}}
{% endwith %}
正在使用ModelAFormSet
的此类实例:
formset = ModelAFormSet(queryset=ModelA.objects.all())
我知道我可以使用Meta
的更改AddModelAForm
类来拥有fields = ['id', 'name', description']
,然后初始化这些值。但是在这种情况下,我将无法再使用实例,而只能使用常规字段值(例如{{formset_form.name.value}}
)。因此,我需要在我的表单的clean()
方法中添加如下内容:
def clean(self):
try:
del self.errors['name']
del self.errors['description']
except KeyError:
pass
我想问一下是否有更好的方法可以初始化这种表单集,并且不需要显式删除错误?