簡體   English   中英

Django Count相關對象和queryset / list的重疊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM