Mri*_*lla 4 python django django-forms django-formwizard
我正在使用Django的FormWizard.它工作正常,但我无法正确显示任何空模型formset.
我有一个名为的模型Domain.我正在创建一个这样的ModelFormset:
DomainFormset = modelformset_factory(Domain)
Run Code Online (Sandbox Code Playgroud)
我将此传递给FormWizard,如下所示:
BuyNowWizardView.as_view([DomainFormset])
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,但是当向导呈现页面时,我得到了所有Domain对象的列表.我想得到一个空的表格.我怎么能这样做?我已经读过,我可以给querysetModelFormset 一个参数,Domain.objects.none()但它似乎不起作用,因为我得到错误.
关于我哪里出错的任何想法?
谢谢
Django文档提供了两种方法来更改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)),
Run Code Online (Sandbox Code Playgroud)
第二种方法是子类化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)
Run Code Online (Sandbox Code Playgroud)
然后DomainFormSet像以前一样传递给表单向导.