如何解决Django使用实例初始化模型表单集
我有以下模型:
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
我想问一下是否有更好的方法可以初始化这种表单集,并且不需要显式删除错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。