Сначала я написал код для динамического построения формы на основе данных из БД, аналогично тому, что я описал в моем предыдущем посте SO .
Как указывает пользователь SO Даниэль Роузман, он использовал для этого набор форм, и теперь я пришел к выводу, что он должен быть совершенно прав. :)
Мой подход работает, в принципе, но я не могу заставить валидную проверку всей формы работать должным образом (я считаю, что это возможно, но это становится довольно сложным, и должен быть более умный способ сделать это = > Формсеты!).
Итак, теперь мой вопрос: как я могу динамически создать набор форм? Не AJAX-способом, я хочу, чтобы метка каждой формы заполнялась значением FK (командой) из БД.
Поскольку мне нужно передать параметры в форму, я использовал эту технику из предыдущего сообщения SO.
При первом подходе мой код просмотра (код формы в предыдущей ссылке):
def render_form(request):
teams = Team.objects.filter(game=game)
form_collection = []
for team in teams:
f = SuggestionForm(request.POST or None, team=team, user=request.user)
form_collection.append(f)
Теперь я хочу сделать что-то вроде:
def render_form(request):
teams = Team.objects.filter(game=game)
from django.utils.functional import curry
from django.forms.formsets import formset_factory
formset = formset_factory(SuggestionForm)
for team in teams:
formset.form.append(staticmethod(curry(SuggestionForm, request.POST or None, team=team, user=request.user)))
Но бит добавления не работает. Как правильно это сделать?
Спасибо!