ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-10-10 09:02:40  阅读:167  来源: 互联网

标签:set text question Choice choice Question objects Django


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

<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()

现在启动服务器查看


功能便可以正常使用了

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

标签:set,text,question,Choice,choice,Question,objects,Django
来源: https://blog.csdn.net/zbz3x/article/details/120682396

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有