【问题标题】:What does choice mean in "for choice in question.choice_set.all" from the Django poll tutorial? [duplicate]Django 投票教程中的“for selection in question.choice_set.all”中的选择是什么意思? [复制]
【发布时间】:2019-07-05 17:25:53
【问题描述】:

我是 Django 新手,正在完成第一个投票教程。我无法理解本教程中 for 循环中“选择”一词的使用。

我已经阅读了与本教程的这一部分相关的其他问题,但大部分都是关于 choice_set.all 的

{% for choice in question.choice_set.all %}
    <li>{{ choice.choice_text }}</li>
{% endfor %}

我的问题与 for 语句中最初使用单词选择有关... for "choice" in。

它似乎引用了我不太了解的整个 Choice 模型。在循环检查choice_text与question.choice_set.all中的值匹配时,说“forchoice.choice_text in”似乎更有意义。

在教程的这一点上,Choice 模型包含choice_text、问题和投票。

有人能帮我理解 for 循环中第一次提到的选择指的是什么吗?

【问题讨论】:

  • 如果没有先学习 Python 的基础知识,就不要从 Django 开始。这是一个标准的 Python for 循环。
  • choice 只是一个变量,你可以命名任何东西,但你可以使用for choice.choice_text in ...,因为那是不正确的。正如@Selcuk 所说,这是基本的python,你需要先学习
  • 谢谢。我了解 Python for 循环的基础知识,但仍然无法使用这种语法。我原以为那里可以使用任何词来代替选择,但事实并非如此。
  • @user11048935 你在这两个地方都改了choice吗?
  • 澄清...如果我将该单词选择更改为棒球等其他内容,则 html 将呈现为空白列表...只是垂直列表点。如果我将它改回单词choice,它会正确显示来自Choice 模型的choice_text 变量列表。我不确定为什么会这样。请注意,此代码位于 html 模板中。

标签: python django


【解决方案1】:

question.choice_set.all 是一个可迭代对象,例如列表或集合,choice 是您正在操作的可迭代对象中的当前项,它可以被赋予除保留字以外的任何名称,但因为它是作者认为将其称为选择而不是ifred 会更清楚,但几乎任何东西都可以工作。

一旦你有了你的项目,你就可以进入它的结构。

【讨论】:

  • 感谢您的浏览。当我将单词选择更改为任何随机单词时,html 将呈现为空白列表......仅显示垂直点。但是,当在那里使用实际的单词选择时,它会在存储在 Choice 模型的 choice_text 字段中的每个列表点旁边显示正确的字符变量。它看起来不像任何随机单词在那里工作,但似乎它实际上需要单词选择。
  • 谢谢。我现在意识到我做错了什么。我对他们在那里使用我们的数据库模型的名称而不是随机单词这一事实感到困惑。现在阅读更多关于 Python 的内容。感谢您的帮助。
【解决方案2】:

只是添加到史蒂夫巴恩斯的answer:您确实可以使用任何词来代替choice,但您必须确保在其他地方使用相同的词。例如:

{% for baseball in question.choice_set.all %}
    <li>{{ baseball.choice_text }}</li>
{% endfor %}

【讨论】:

  • 再次感谢。我真的很感激。
猜你喜欢
  • 2017-12-02
  • 2015-01-14
  • 2021-05-31
  • 2018-05-07
  • 2012-05-18
  • 1970-01-01
  • 2013-09-26
  • 2017-08-14
  • 2014-02-18
相关资源
最近更新 更多