如何在 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/