And*_*unt 6 django django-models django-orm
class Topping(models.Model):
name = models.CharField(max_length=30)
class Pizza(models.Model):
name = models.CharField(max_length=50)
toppings = models.ManyToManyField(Topping)
Run Code Online (Sandbox Code Playgroud)
是否有可能选择配有他们的浇头的比萨饼,但只有那些有一定数量浇头的比萨饼,比如0,1,2?
您可以通过注释查询集来过滤浇头数,然后对其进行过滤.
from django.db.models import Count
pizzas = Pizza.objects.annotate(
num_toppings=Count('toppings'),
).filter(num_toppings__lt=3)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用prefetch_related与其他查询集相同的方式.
pizzas = Pizza.objects.annotate(
num_toppings=Count('toppings'),
).filter(num_toppings__lt=3).prefetch_related('toppings')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |