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。
答案 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()