python - Django查询集按具有不同的相关模型排序

标签 python django django-models

我有以下两个模型:

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/

相关文章:

python - 如何通过检查列表中的子级索引值来过滤 Pandas 数据帧的行?

python - 如何修复 Python 3 中字典处理的顺序?

python - (Python) If Else 问题和列表到字符串转换问题

python - 动态修改 Django Rest Framework 中的序列化器字段

django - 将 Django 模型字段的类型从 CharField 更改为 ForeignKey

Django ORM 和 SQL 内连接

python - Django:如何在 Django 过滤方法中使用 "or"?

javascript - 如何从 Django 表单库中隐藏复选框并使用 Javascript 切换其显示属性

python - 从 python 中的文件解析

python - django RuntimeError at/admin/users/user/1/change/, 单线程执行器已经被使用,会死锁