5

私はDjangoのFormWizardを使用しています。正常に動作しますが、空のモデルフォームセットを正しく表示するのに問題があります。

というモデルがありDomainます。私は次のようなModelFormsetを作成しています:

DomainFormset = modelformset_factory(Domain)

私はこれを次のようにFormWizardに渡します。

BuyNowWizardView.as_view([DomainFormset])

エラーは発生しませんが、ウィザードがページをレンダリングすると、すべてのDomainオブジェクトのリストが表示されます。空のフォームを取得したいのですが。どうすればこれを行うことができますか?querysetModelFormsetに次のようなパラメータを指定できることを読みましたが、Domain.objects.none()エラーが発生するため、機能しないようです。

私がどこで間違っているのかについてのアイデアはありますか?

ありがとう

4

1 に答える 1

6

Djangoのドキュメントには、フォームセットのクエリセットを変更する2つの方法があります。

最初の方法は、フォームセットをインスタンス化するときに引数としてクエリセットを渡すことです。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)),

2番目のアプローチは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 に答える