Django 的 FormWizard 中的空 ModelFormset

发布于 2024-12-18 12:55:18 字数 512 浏览 0 评论 0原文

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

我有一个名为 Domain 的模型。我正在创建这样的 ModelFormset:

DomainFormset = modelformset_factory(Domain)

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

BuyNowWizardView.as_view([DomainFormset])

我没有收到任何错误,但当向导呈现页面时,我得到所有 Domain 对象的列表。我想要一份空表格。我怎样才能做到这一点?我读过,我可以向 ModelFormset 提供一个 queryset 参数,例如 Domain.objects.none() 但它似乎不起作用,因为我收到错误。

关于我哪里出错了有什么想法吗?

谢谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笛声青案梦长安 2024-12-25 12:55:18

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

第一种方法是在实例化表单集时将查询集作为参数传递。使用 formwizard,您可以通过传递 instance_dict

# set the queryset for step '0' of the formset
instance_dict = {'0': Domain.objects.none()}

# in your url patterns
url(r'^

第二种方法是子类化 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 传递给表单向导。

, BuyNowWizardView.as_view([UserFormSet], instance_dict=instance_dict)),

第二种方法是子类化 BaseModelFormSet 并覆盖__init__ 方法使用空查询集。

然后,您可以像以前一样将 DomainFormSet 传递给表单向导。

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'^

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.

, 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.

You then pass DomainFormSet to the form wizard as before.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文