栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django polls应用中Django表单传递问题?;.choice

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django polls应用中Django表单传递问题?;.choice

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

What's up?

回过头对比一下detail.html

{{ question.question_text }}

{% if error_message %}

{{ error_message }}

{% endif %}
{% csrf_token %} {% for choice in question.choice_set.all %}
{% endfor %}

发现其中
{% for choice in question.choice_set.all %}
{% endfor %}
这三行代码没没有作用。
造成的原因就是 question.choice_set.all没有返回值。
是的 ,回顾一下 第二篇记录的时候,我只给数据库中的Question创建生成了两个记录,而choice没有对应的记录。官方文档是有创建的,可是我是看完文档再重新打的代码,所以就tm忘记了。所以看文档之后打代码请细心。

解决方案:给Choice表补充对应的记录
C:Users86150Desktop我的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()
, ]>
>>> Choice.objects.all()
                     #看这里,空数组,因为我们没有对此创建记录值
>>> q1=Question.objects.all()[0]
>>> q2=Question.objects.all()[1]
>>> c1=Choice.objects.all()[0]
>>> c2=Choice.objects.all()[1]
>>> c1.question

>>> c1.question=q1
>>> c2.question=q2
>>> c1.choice_text="vote"
>>> c2.choice_text="vote"
>>> c1.save()
>>> c2.save()

现在启动服务器查看


功能便可以正常使用了

然后又按照官方文档改了一下
大致就是将Choice表删除了我上方的vote,在创建not much 和 the sky两个选项。
这里使用关系对象创建的

这里只记录一下核心代码
q = Question.objects.get(pk=1)
# delete vote
c = q.choice)set.filter(choice_text='vote')
c.delete()

# create not much and the sky
>>> q.choice_set.create(choice_text='Not much', votes=0)

>>> q.choice_set.create(choice_text='The sky', votes=0)

按官方文档的效果:


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/308460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号