Django polls应用中Django表单传递问题?;.choice_set.all不被调用?;Django choice_id?

我昨天晚上的思路是表单的传递过程出了问题。一直没有想到哪里有错误,然后查看了前段的源码发现

<h1>What&#39;s up?</h1>



<form action="/polls/1/vote/" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="lUktos7JDPePxWA5rJU1RAmPNlKTBWFcwf8GRWbncpiNjWaKGLK2RW9Q472l9lfo">

<input type="submit" value="Vote">
</form>

回过头对比一下detail.html

<h1>{{ question.question_text }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br>
{% endfor %}
<input type="submit" value="Vote">
</form>

发现其中
{% for choice in question.choice_set.all %} <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}"> <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br> {% endfor %}
这三行代码没没有作用。
造成的原因就是 question.choice_set.all没有返回值。
是的 ,回顾一下 第二篇记录的时候,我只给数据库中的Question创建生成了两个记录,而choice没有对应的记录。

解决方案:给Choice表补充对应的记录

C:\Users\86150\Desktop\我的PYTHON项目\mysite>python3 manage.py shell
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from polls.models import Choice, Question
>>> Question.objects.all()
<QuerySet [<Question: What's up?>, <Question: what fuck>]>
>>> Choice.objects.all()
<QuerySet []>                     #看这里,空数组,因为我们没有对此创建记录值
>>> q1=Question.objects.all()[0]
>>> q2=Question.objects.all()[1]
>>> c1=Choice.objects.all()[0]
>>> c2=Choice.objects.all()[1]
>>> c1.question
<Question: What's up?>
>>> c1.question=q1
>>> c2.question=q2
>>> c1.choice_text="vote"
>>> c2.choice_text="vote"
>>> c1.save()
>>> c2.save()

现在启动服务器查看
Django polls应用中Django表单传递问题?;.choice_set.all不被调用?;Django choice_id?
Django polls应用中Django表单传递问题?;.choice_set.all不被调用?;Django choice_id?
Django polls应用中Django表单传递问题?;.choice_set.all不被调用?;Django choice_id?

功能便可以正常使用了

有一说一作为投票应用,这个数据库的设计不是很合理

上一篇:UI自动化框架遇到的一些question(持续更新)


下一篇:Nginx错误信息