我對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