Django的FormWizard中的空的ModelFormset [英] Empty ModelFormset in Django's FormWizard
问题描述
我有一个名为 Domain
。我正在创建一个这样的ModelFormset:
DomainFormset = modelformset_factory(Domain)
我将其传递给FormWizard,如下所示:
BuyNowWizardView.as_view([DomainFormset])
我没有收到任何错误,但是当向导渲染该页面,我得到所有域
对象的列表。我想要一个空的表格。我该怎么办?我已经读过,我可以给一个 queryset
参数到ModelFormset像 Domain.objects.none()
但它在我收到错误的时候似乎不起作用。
任何关于我出错的想法?
感谢
Django文档提供了两种方式来更改表单集的查询集。
第一种方法是在实例化表单集时将查询集作为参数传递。使用formwizard,您可以通过传递 instance_dict
#设置formset的步骤'0'的查询器
instance_dict = {'0':Domain.objects.none()}
#在你的url模式
url(r'^ $',BuyNowWizardView.as_view([UserFormSet],instance_dict = instance_dict)),
第二种方法是将 BaseModelFormSet
子类化,并覆盖 __ init __
方法以使用空查询器。
$ $ $ $ $ $ $ $ $ $ $
ase $ * args,** kwargs):
super(BaseDomainFormSet,self).__ init __(* args,** kwargs)
self.queryset = Domain.objects.none()
DomainFormSet = model formset_factory(Domain,formset = BaseDomainFormSet)
然后通过 DomainFormSet
到以前的表单向导。
I'm using Django's FormWizard. It works fine but I'm having trouble getting any empty model formset to display correctly.
I have a model called Domain
. I'm creating a ModelFormset like this:
DomainFormset = modelformset_factory(Domain)
I pass this to the FormWizard like this:
BuyNowWizardView.as_view([DomainFormset])
I don't get any errors but when the wizard renders the page, I get a list of all Domain
objects. I'd like to get an empty form. How I can do this? I've read that I can give a queryset
parameter to the ModelFormset like Domain.objects.none()
but it doesn't seem to work as I get errors.
Any ideas on where I'm going wrong?
Thanks
The Django docs give two ways to change the queryset for a formset.
The first way is to pass the queryset as an argument when instantiating the formset. With the formwizard, you can do this by passing 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)),
The second approach is to subclass BaseModelFormSet
and override the __init__
method to use the empty queryset.
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)
You then pass DomainFormSet
to the form wizard as before.
这篇关于Django的FormWizard中的空的ModelFormset的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!