[英]Django Count overlap of related objects and queryset/list
说我有一个模型:
class Car(models.Model):
name = models.CharField()
parts = models.ManyToManyField(Part)
现在,在我的Car对象查询集中(Car.objects.all())中,我要注释ID列表或零件查询集中的零件重叠计数。
假设我有两个Car对象:
{
name: 'car1',
parts: [1,2,3,4]
}
{
name: 'car2',
parts: [1,5,6,7]
}
然后,我希望从列表[1,2,3]的查询中获得以下输出
{
name: 'car1',
parts: [1,2,3,4],
parts_overlap: 3
}
{
name: 'car2',
parts: [1,5,6,7],
parts_overlap: 1
}
我需要这样的ti,因为我想订购它。
这可能吗?
我发现了。
from django.db.models import Count, Case, When, IntegerField
queryset.annotate(parts_overlap=Count(
Case(
When(parts__in=list, then=1),
output_field=IntegerField()
)
))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.