如果使用Choice.set,为什么选择使用choice.set?

时间:2016-12-19 07:16:20

标签: python django

我正在从文档中学习django。

以下是models.py

from django.db import models
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

这在shell中执行:

 q = Question.objects.get(pk=1)
>>> q.choice_set.all()
<QuerySet []>

此处使用why q.choice_set代替q.Choice_set

choice_set是一些内置函数还是由于models.py中的选择而使用它,如果是这样,为什么它的第一个字母是小写的呢?

2 个答案:

答案 0 :(得分:2)

因为the documentation这样说:

  

如果模型具有ForeignKey,则外键模型的实例将有权访问返回第一个模型的所有实例的Manager。默认情况下,此Manager名为FOO_set,其中FOO是源模型名称,小写。

答案 1 :(得分:0)

它的小写,因为Python中遵循的主要编码标准是Pep8,而functionnamesinstance variables所指示的应该是小写的。

  

函数名称应为小写,并根据需要用下划线分隔,以提高可读性。