我有以下两个模型:
class Show(models.Model):
name = models.CharField(max_length=100)
is_active = models.BooleanField(default=True)
class Episode(models.Model):
start = models.DateTimeField()
series = models.ForeignKey('Show', related_name='episodes')
我想检索 Show
的所有实例其中有is_active
设置为True
并且至少有 1 Episode
。我遇到问题的部分是我还想要 Show
由相关 Episode
订购的实例start
字段和 Show
实例是唯一的。
这可以通过单个查询实现吗?
我尝试过的:
Show.objects.annotate(
e_count=Count('episodes')
).filter(
e_count__gt=0,
is_active=True,
).order_by('episodes__start').distinct()
最佳答案
按照 Anonymous 的建议,我通过使用 Min
实现了这一点。
Show.objects.filter(
is_active=True,
).annotate(
e_count=Count('episodes'),
start=Min('episodes__start'),
).filter(
e_count__gt=0,
start__gt=timezone.now(),
).order_by('start')
关于python - Django查询集按具有不同的相关模型排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31798315/