如何在 django 中编写选择查询?我有 2 个一对一关系
一开始,我的英语不是很好,我很抱歉:)。我有3张桌子。司机,汽车和乘车。驾驶员和汽车之间的关系是(一对多:驾驶员可以拥有多辆汽车。汽车和乘车之间的关系是(一对多:一辆汽车可以有多个乘车。我想要有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 乘车的司机
您可以计算每Driver
的 Ride
秒数,然后过滤该数字,例如:
from django.db.models import Count
Driver.objects.annotate(
nride=Count('car__ride')
).filter(nride__gte=x)
因此,我们首先使用相关Ride
的Count(..)
[Django-doc] 注释每个Driver
对象,然后通过使用__gte
查找 [Django-doc] 指定nrides
字段注释应大于或等于 x
来过滤该查询集。这里x
当然是您需要填写的所需游乐设施的数量(例如5
(。