我有一个模型表单,我添加了一个额外的字段 - is_flagged .
#forms.py
class UserForm(forms.ModelForm):
is_flagged = forms.BooleanField(required=False)
class Meta:
model = CustomUser
fields = ['username','is_flagged']
现在,因为我的用户模型没有'is_flagged'属性,所以我通过修改后的查询集为每个用户创建了这个值 .
#managers.py
class FlaggedUserManager(models.Manager):
def get_queryset(self):
qs = super(FlaggedUserManager, self).get_queryset().all()
for user in qs:
user.is_flagged = True
return qs
#user model
flagged_users = FlaggedUserManager()
接下来,我使用自定义查询集创建一个modelformset来填充表单 .
base_formset = modelformset_factory(CustomUser, form=UserForm, extra=0)
formset = base_formset(queryset=CustomUser.flagged_users.all())
return {'formset': formset}
一切都按预期工作,为所有用户呈现字段'is_flagged'但数据不填充表单,因为呈现的复选框都设置为0 .
任何人都可以建议我做错了什么,以及我如何能够从修改后的查询集中填充此字段?
提前致谢,
1 回答
好的,最后我通过以另一种方式接近它并将参数传递给formset来解决这个问题:
Django Passing Custom Form Parameters to Formset