Django ForeignKey需要分组
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',)
我想列出所有记者的名单,并列出以下格式的所有文章。怎么可能?
-------------------------------
Reporter Name | Total Article
-------------------------------
Reporter 1 | 3
-------------------------------
Reporter 2 | 4
-------------------------------
答案 0 :(得分:1)
如果您想列出所有报告者,则可以使用Reporter.objects.all()
,它将返回一个所有报告者的查询集,为了获取其中的文章,请使用反向关系,即-
reporter_object.article_set
,因为您没有定义任何相关名称。参见this
我可以举一个简单的示例,说明如何打印所有记者及其文章-
for reporter in Reporter.objects.all():
print(reporter)
for article in reporter.article_set.all():
print(article)
定义外键关系时,将在Reporter和Article之间创建一对多关系,另外在Reporter中添加了另一个属性,默认情况下,它是带有后缀_set
的模型名称,即article_set但是,当您指定related_name
时,它将与您的related_name
相同,现在您可以轻松地通过与Reporter对象相关的名称来调用文章。
仍然对此有任何疑问。