То, что я пытаюсь сделать, должно управлять несколькими формами на одной странице, я знаю, что существуют formsets, и я знаю, как управление формой работает, но я получил некоторые проблемы с идеей, которую я имею в виду.
Только, чтобы помочь Вам вообразить, что моя проблема, я собираюсь использовать 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)
Теперь, предположите, что я уже сделал классы формы:
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 и Choice на единственной странице, но ум, что эти модели могут быть повторены также:
<form action="{{url}}" method="post">
{{pollform}}
{{choiceform}}
{{pollform}}
</form>
Поскольку Вы видите, что существует две формы Опроса и одна форма Выбора, но формы Опроса разделяются формой Выбора. Мне действительно нужно это, формы сохраняют свой порядок на странице, так немного более твердо использовать formsets.
Проблема, которую я получил, то, что значения, который прибывает в сообщение, являются всеми именем "ответ", таким образом, я получаю список всех элементов от всех форм именем "ответ", и я не могу определить, которые принадлежат каждой форме.
Не знайте, получает ли это объяснение четкое представление о моей проблеме. Какие-либо идеи сделать этот материал?
Спасибо за помощь!
PD: не обращайте внимание на отношение между Опросом и Выбором, те модели являются просто для уточнения problen, таким образом, отношение не имеет значения вообще.
Используйте префикс
kwarg
Вы можете объявить свою форму как:
form = MyFormClass(prefix='some_prefix')
, а затем, если префикс будет То же самое, обрабатывать данные как:
form = MyFormClass(request.POST, prefix='some_prefix')
Django позаботится обо всем остальном.
Таким образом, у вас может быть столько форм одного типа, сколько вы хотите на странице