Django - Работа с несколькими формами

То, что я пытаюсь сделать, - это управлять несколькими формами на одной странице, я знаю, что есть формы, и я знаю, как работает управление формой, но у меня возникли некоторые проблемы с идеей, которую я имею в виду.

Просто, чтобы помочь вам представить, в чем моя проблема, я собираюсь использовать примеры моделей django:

from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField()

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

Теперь, представьте, что я уже сделал форму clases:

from django import forms
from mysite.polls.models import Poll, Choice

class PollForm(forms.ModelForm):
    class Meta:
        model = Poll

class ChoiceForm(forms.ModelForm):
    class Meta:
        model = Choice
        exclude = ('poll',) 

Итак, я хочу сделать несколько экземпляров формы модели Poll and Choice на одной странице, но помните, что эти модели также можно повторить:

<form action="{{url}}" method="post">
    {{pollform}}
    {{choiceform}}
    {{pollform}}
</form>

Как вы можете видеть, есть две формы опроса и одна форма "Выбор", но формы опроса разделены формой "Выбор". Мне нужно, чтобы формы сохраняли свой порядок на странице, поэтому немного сложнее использовать формы.

Проблема, которую я получил, заключается в том, что значения, которые появляются в сообщении, - это все по имени "ответ", поэтому я получаю список всех элементов из всех форм по имени "ответ", и я не могу идентифицировать которые принадлежат каждой форме.

Не знаю, ясно ли это объяснение для моей проблемы. Любые идеи, чтобы получить этот материал?

Спасибо за вашу помощь!

PD: Не обращайте внимания на связь между опросом и выбором, эти модели просто разъясняют проблему, поэтому отношение вообще не имеет значения.

Ответ 1

Используйте prefix kwarg

Вы можете объявить свою форму как:

form = MyFormClass(prefix='some_prefix')

а затем, пока префикс тот же, обрабатывайте данные как:

form = MyFormClass(request.POST, prefix='some_prefix')

Django будет обрабатывать остальные.

Таким образом, вы можете иметь столько же форм, сколько хотите на странице

Ответ 2

Можете ли вы дать мне пример захвата, где я поместил эту строку кода???

form = MyFormClass (request.POST, prefix = 'some_prefix')

Это в виде или формах??