你能编写一个查询来根据修改Django中的外键来查找另一个表中的值吗?

时间:2018-04-27 15:10:34

标签: django

我正在尝试在Django中编写一个查询,我根据外键的值和外键的修改来查询表中的值。考虑一个示例数据库,该数据库将团队的名称,团队和记录存储在一个表中,该表链接到联盟在另一个表中的收入:

class League(models.Model):
    id = models.PositiveSmallIntegerField(primary_key=True)
    revenue = models.IntegerField(max_length=5)

class Team(models.Model):
    name = models.TextField(max_length=20)
    year = models.ForeignKey(League, max_length=4)
    record = models.TextField(max_length=10)

我如何编写查询以便创建一个包含团队名称,年份,今年收入和上一年收入的表格?

1 个答案:

答案 0 :(得分:0)

您可以定义多对多关系:

class YearlyReport(models.Model):
    year = models.CharField(max_length=4)
    revenue = models.IntegerField(default=0)


class Team(models.Model):
    name = models.CharField(max_length=20)
    yearly_reports = models.ManyToManyField(YearlyReport)

这就是你可以添加报告的方法:

t = Team(name='Test Team')
yearly_report_for_2018 = YearlyReport(revenue=100000, year='2018')
yearly_report_for_2017 = YearlyReport(revenue=50000, year='2017')
t.yearly_reports.add(yearly_report_for_2018)
t.yearly_reports.add(yearly_report_for_2017)

这是您获取报告的方式:

r = YearlyReport.objects.get(team__name='Some Team')
print(r.year, r.revenue)

更多官方文档: https://docs.djangoproject.com/en/2.0/topics/db/examples/many_to_many/