我正在使用Django的FormWizard。它工作正常,但我无法正确显示任何空模型formset。
我有一个名为Domain
的模型。我正在创建一个像这样的ModelFormset:
DomainFormset = modelformset_factory(Domain)
我将此传递给FormWizard,如下所示:
BuyNowWizardView.as_view([DomainFormset])
我没有收到任何错误,但是当向导呈现页面时,我得到了所有Domain
个对象的列表。我想得到一个空的表格。我怎么能这样做?我已经读过,我可以像queryset
一样向ModelFormset提供Domain.objects.none()
参数,但它似乎不起作用,因为我收到错误。
关于我哪里出错的任何想法?
由于
答案 0 :(得分:5)
Django文档为change the queryset for a formset提供了两种方法。
第一种方法是在实例化formset时将queryset作为参数传递。使用formwizard,您可以通过传递instance_dict
# set the queryset for step '0' of the formset
instance_dict = {'0': Domain.objects.none()}
# in your url patterns
url(r'^$', BuyNowWizardView.as_view([UserFormSet], instance_dict=instance_dict)),
第二种方法是子类BaseModelFormSet
并覆盖__init__
方法以使用空查询集。
from django.forms.models import BaseModelFormSet
class BaseDomainFormSet(BaseModelFormSet):
def __init__(self, *args, **kwargs):
super(BaseDomainFormSet, self).__init__(*args, **kwargs)
self.queryset = Domain.objects.none()
DomainFormSet = modelformset_factory(Domain, formset=BaseDomainFormSet)
然后像以前一样将DomainFormSet
传递给表单向导。