我正在尝试在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)
我如何编写查询以便创建一个包含团队名称,年份,今年收入和上一年收入的表格?
答案 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/