5

我正在使用 Django 的 FormWizard。它工作正常,但我无法正确显示任何空模型表单集。

我有一个模型叫Domain. 我正在创建一个这样的 ModelFormset:

DomainFormset = modelformset_factory(Domain)

我将它传递给 FormWizard,如下所示:

BuyNowWizardView.as_view([DomainFormset])

我没有收到任何错误,但是当向导呈现页面时,我得到了所有Domain对象的列表。我想要一个空的表格。我怎么能做到这一点?我已经读到我可以给querysetModelFormset 一个参数,Domain.objects.none()但是当我遇到错误时它似乎不起作用。

关于我哪里出错的任何想法?

谢谢

4

1 回答 1

6

Django 文档提供了两种更改表单集查询集的方法。

第一种方法是在实例化表单集时将查询集作为参数传递。使用表单向导,您可以通过传递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给表单向导。

于 2011-11-29T19:18:21.457 回答