我对Formset有点新,而且我遇到了一个问题。通过FormSet将参数传递给ModelForm
我使用Modelform来创建一个新的对象。
class AddUpdateEntryForm(forms.ModelForm):
class Meta:
model = Zeit
exclude = ('mitarbeiter', 'user_updated')
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
super(AddUpdateEntryForm, self).__init__(*args, **kwargs)
self.fields['projekt'].queryset = Projekt.objects.filter(firma=Mitarbeiter.objects.get(user_id=self.user).firma_id)
这形式得到它的参数从视图:
form = AddUpdateEntryForm(user=entry_user, initial=initial)
现在,我想在一个页面上显示多个窗体。 我使用:
forms.py:
AddEntryFormSet = formset_factory(form=AddUpdateEntryForm)
和
views.py:
formset = AddEntryFormSet(initial=initial)
,工作正常,但只有当我注释掉 “self.user ......” 和 “self.fields ......” 线来自ModelForm类。
我尝试了将参数从视图内的参数传递给ModelForm的几种方法。 有没有适当的方法来做到这一点?
预先感谢 康拉德
如果您使用的范本,那么我建议使用'modelformset_factory',而不是'formset_factory',让你得到的[模型表单集]好处(https://docs.djangoproject.com/en /1.6/topics/forms/modelforms/#model-formsets) – Alasdair
我第一次尝试modelformset_factory,但是使用自定义ModelForm时没有任何不同。当您想要使用ModelFormSet而不使用现有的ModelForm时,其优点是modelformset_factory。 – Conrad
即使您使用自定义模型表单,也是有区别的。由'modelformset_factory'创建的模型表单集可以使用查询集实例化,并且将具有'save()'方法,这与formset_factory创建的表单集不同。 – Alasdair