python - 如何在django中以一对多关系链编写选择查询?

标签 python django django-queryset one-to-many database-relations

如何在 django 中编写选择查询?我有 2 个一对一的关系

一开始,我的英语不是很好。我很抱歉 :)。我有3张 table 。司机、汽车和乘车。 Driver 和 Car 之间的关系是(一对多:一个 Driver 可以拥有多个 Car。Car 和 Ride 之间的关系是(一对多:一个 Car 可以有多个 Ride。我想要拥有 x 的司机列表)乘车次数。

我的模型:

class Driver(models.Model):
    account = GenericRelation(Account, related_query_name='drivers')

class Car(models.Model):
    owner = models.ForeignKey(Driver, on_delete=None)

class Ride(models.Model):
    car = models.ForeignKey(Car, on_delete=models.CASCADE)
    request = models.OneToOneField(RideRequest, on_delete=models.CASCADE, null=False)

我期望这样的事情:<QuerySet [<Driver: 1>, <Driver: 2>]>这是具有大于或等于 x 行程的司机

最佳答案

您可以计算每个司机行程数量,然后根据该数字进行过滤,例如:

from django.db.models import <b>Count</b>

Driver.objects.annotate(
    <b>nride=Count('car__ride')</b>
).filter(<b>nride__gte=x</b>)

因此,我们首先使用 Count(..) [Django-doc] 注释每个 Driver 对象。的相关 Ride s,接下来我们通过指定 nrides 字段注释应大于或等于 x 来过滤该查询集,方法是使用__gte lookup [Django-doc] 。这里的x当然是您需要填写的所需乘车次数(例如5)。

关于python - 如何在django中以一对多关系链编写选择查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56613021/

相关文章:

python - Django:allow_tags和short_description如何工作?

python - 没有方法名称的 Django url.py

python - django - 一个内联多个模型

django - 从 django 查询集中的单个字段派生多个值

django-admin - Django ModelAdmin 查询集覆盖不起作用

python - 使用 bash 或 python 将路由器配置文件转换为 csv

python - While 在 Python 中用单引号循环一个条件

python - 如何知道非阻塞套接字是否已关闭?

Django 查询集问题

python - 为什么即使 verb.exc 添加了正确的值,NLTK 词形还原也有错误的输出?