Python 一种形式中的多个实例
尝试实现投票创建系统,在这里我可以创建带有选项的问题(以前我都是在管理员中创建的,并且必须为每个选项创建一个单独的选项对象) 以下是我的模型:Python 一种形式中的多个实例,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,尝试实现投票创建系统,在这里我可以创建带有选项的问题(以前我都是在管理员中创建的,并且必须为每个选项创建一个单独的选项对象) 以下是我的模型: class Question(models.Model): has_answered = models.ManyToManyField(User, through="Vote") question_text = models.CharField(max_length=80) date = models.DateTimeField(
class Question(models.Model):
has_answered = models.ManyToManyField(User, through="Vote")
question_text = models.CharField(max_length=80)
date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.question_text
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=100)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
现在,这是模板:
<form method="post" action="">{% csrf_token %}
{{ question_form.question_text }}
<br><br>
<!--{{ choice_form.choice_text|placeholder:"Choice" }}-->
<input class="choice" name="choice_text" placeholder="Choice" type="text" />
<input class="choice" name="choice_text" placeholder="Choice" type="text" />
<input class="choice" name="choice_text" placeholder="Choice" type="text" />
<img src="{% static 'images/plus.png' %}" class="add_choice" />
<br>
<button class="submit" type="submit">Create question</button>
</form>
知道为什么吗?以下是我的看法:
def questions(request):
question_form = QuestionForm(request.POST or None)
choice_form = ChoiceForm(request.POST or None)
if request.POST:
choice = request.POST.getList('choice_text')
print(choice)
if request.user.is_authenticated():
if question_form.is_valid():
print('valid question')
#question = question_form.save(commit=False)
return render(request, 'questions.html', {'question_form': question_form, 'choice_form': choice_form})
那么,我应该怎样做才能抓住每一个选项输入呢?最后,我想让所有这些选择映射到输入的问题。但正如我所说的,我确信同一个字段的多个实例是否可能以一种形式出现。尝试使用
getlist
而不是getlist
也考虑使用,特别是在您的场景中可能有用。
def questions(request):
question_form = QuestionForm(request.POST or None)
choice_form = ChoiceForm(request.POST or None)
if request.POST:
choice = request.POST.getList('choice_text')
print(choice)
if request.user.is_authenticated():
if question_form.is_valid():
print('valid question')
#question = question_form.save(commit=False)
return render(request, 'questions.html', {'question_form': question_form, 'choice_form': choice_form})