如何在 one-to-many 关系链中的 Django 中编写 select 查询?

How to write select query in django in chain of one-to-many relationship?

如何在 Django 中编写 select 查询?我有 2 one-to-may 关系

一开始,我的英语不是很好。我很抱歉 :)。我有 3 张桌子。 Driver,汽车和乘车。 Driver和Car的关系是(one-to-many:一个Driver可以有多个Car。Car和Ride的关系是(one-to-many:一个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>]>这是 Drivers 大于或等于 x 游乐设施

您可以计算每个 DriverRide 的数量,然后过滤该数字,例如:

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] of related Rides, next we filter that queryset by specifying that the nrides field annotation should be greater than or equal to x, by using the __gte lookup [Django-doc] 注释每个 Driver 对象。这里x当然是你需要填写的乘车次数(比如5)。