Вам необходимо использовать технику, описанную в этом сообщении чтобы иметь возможность передавать параметры. Благодарим этого автора за отличный пост. Вы достигнете этого в нескольких частях:
Форма осведомлена о дополнительных параметрах
Пример из связанного вопроса:
def __init__(self, *args, **kwargs):
someeobject = kwargs.pop('someobject')
super(ServiceForm, self).__init__(*args, **kwargs)
self.fields["somefield"].queryset = ServiceOption.objects.filter(
somem2mrel=someobject)
Или вы можете заменить последний код на
self.fields["somefield"].initial = someobject
Напрямую и работает.
Настройка инициализации каррированной формы:
formset = formset_factory(Someform, extra=3)
formset.form = staticmethod(curry(someform, somem2mrel=someobject))
Это позволяет вам передавать настраиваемые параметры формы. Теперь вам нужно:
Генератор для получения различных начальных параметров
Я использую это:
def ItemGenerator(Item):
i = 0
while i < len(Item):
yield Item[i]
i += 1
Теперь я могу сделать это:
iterdefs = ItemGenerator(ListofItems) # pass the different parameters
# as an object here
formset.form = staticmethod(curry(someform, somem2mrel=iterdefs.next()))
Вуаля. Каждая оценка метода form
оценивается частями, передающими повторяющийся параметр. Мы можем перебирать то, что нам нравится, поэтому я использую этот факт для перебора набора объектов и передачи значения каждого из них в качестве другого начального параметра.
person
Community
schedule
25.04.2011