2024-04-26 21:08:58 发布
网友
我有以下数据:
1, Red, Audi 2, Black, Audi 3, Black, BMW
我想得到同一辆车的所有既有Red和Black(而且只有它们)颜色的行。在
Red
Black
在本例中,我期望结果是1和2,因为Audi同时是Red和{},但不是3,因为没有RedBMW。在
Audi
BMW
如何使用django orm实现它?在
您可以尝试这样的方法:
from django.db.models import Subquery, OuterRef, Q, Count, IntegerField color_filter = Q(color="Red") | Q(color="Black") cars = Car.objects.annotate( count=Subquery( Car.objects.filter(color_filter, name=OuterRef('name')) .values('name') .annotate(count=Count('name')) .values('count'), output_field=IntegerField() ) ).filter(color_filter, count=2)
我不确定如何(或是否)将其转换为django ORM,但如果您愿意执行原始查询,则应该可以:
SELECT a.* FROM (SELECT * FROM Car WHERE color='Black') AS a INNER JOIN (SELECT name FROM Car WHERE color='Red') AS b ON (a.name=b.name)
您可以尝试这样的方法:
我不确定如何(或是否)将其转换为django ORM,但如果您愿意执行原始查询,则应该可以:
相关问题 更多 >
编程相关推荐