【发布时间】:2018-07-06 04:31:33
【问题描述】:
我有 3 个链接的 Django 模型。
models.py
Assessment(models.Model):
finalized = models.BooleanField(default=False)
finalized_date = models.DateTimeField(default=blank, blank=True)
workstation = models.ForeignKey(Assessment, null=True, blank=True, on_delete=models.SET_NULL)
class Meta:
get_latest_by = "finalized_date"
Workstation(models.Model):
pass
Answer(models.Model):
score = models.IntegerField(default=0)
assessment = models.ForeignKey(Assessment, null=True, blank=True, on_delete=models.SET_NULL)
这是我的第一个问题:
我需要一个返回所有最新 (L) 评估的查询集。
例如 (L) 是最新的:
Workstation 1 | Workstation 2 | Workstation 3
------------------------------------------------------
Assessment 1 (L) | Assessment 12 | Assessment 4
Assessment 2 | Assessment 41 | Assessment 15 (L)
Assessment 3 | Assessment 99 (L) | Assessment 9
所以查询集应该返回:Assessment 1, Assessment 99 and Assessment 15
我曾想过做一个工作站查询集,然后做一个for 循环,但这样做成本太高并且会产生大量查询。
第二个问题(与第一个有关):
我实际上需要一个与工作站最新评估相关的所有答案的查询集。
我认为我可以将其分解为几个查询集以使其工作,但如果有一种方法可以从一个查询集中做到这一点,请教育我!
因此,一旦我获得了来自 #1 的评估查询集,我将只使用以下查询集来获得我真正需要的内容。
final_queryset = Answer.objects.filter(assessment__in=QuerySet_From_Problem_1)
【问题讨论】:
标签: django django-views django-queryset