什么是article_set?如何运作?

时间:2018-08-09 06:44:24

标签: django django-queryset

from django.db import models

class Reporter(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField()

    def __str__(self):
        return "%s %s" % (self.first_name, self.last_name)

class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.headline

    class Meta:
        ordering = ('headline',)

现在在python shell中:

from datetime import date

r = Reporter(first_name='John', last_name='Smith', email='john@example.com'
r.save()

new_article = r.article_set.create(headline="John's second story",
pub_date=date(2005, 7, 29))

以上代码是从Django文档引用的。如有任何误解,请转到此link

1 个答案:

答案 0 :(得分:1)

article_set与您的报告者对象中的文章具有向后关系。 Django由于reporter模型中的ForeignKey Article而创建了此“隐藏”字段。

请参阅文档的this part

  

如果模型具有ForeignKey,则外键模型的实例将   有权访问返回第一个实例的所有实例的Manager   模型。默认情况下,此管理器名为FOO_set,其中FOO是   源模型名称,小写。该管理器返回QuerySet,   可以按照“检索”中的说明进行过滤和操作   对象”部分。

您可以从这样的文章实例访问reporter

article_instance.reporter

您可以像这样从记者那里获取文章:

reporter_instance.article_set.all()