Пустой ModelFormset в FormWizard Джанго - PullRequest
4 голосов
/ 29 ноября 2011

Я использую Джанго FormWizard. Он работает нормально, но у меня возникают проблемы с отображением любого пустого набора форм модели.

У меня есть модель под названием Domain. Я создаю ModelFormset так:

DomainFormset = modelformset_factory(Domain)

Я передаю это FormWizard следующим образом:

BuyNowWizardView.as_view([DomainFormset])

Я не получаю никаких ошибок, но когда мастер отображает страницу, я получаю список всех Domain объектов. Я хотел бы получить пустую форму. Как я могу это сделать? Я читал, что могу дать queryset параметр для ModelFormset, например Domain.objects.none(), но он не работает, когда я получаю ошибки.

Есть идеи, где я иду не так?

Спасибо

1 Ответ

5 голосов
/ 29 ноября 2011

Документация 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'^$', 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 мастеру формы, как и раньше.

...