我有以下两种模式:
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
的{{1}}设置为is_active
并且至少有True
的所有实例。我遇到问题的部分是,我还希望相关的Episode
Show
字段对Episode
个实例进行排序,并使start
个实例具有唯一性。
单个查询是否可以实现这一目标?
我尝试过:
Show
答案 0 :(得分:1)
我是按照匿名的建议使用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')