【问题标题】:Filter prefetch_related empty in django在 django 中过滤 prefetch_related 空
【发布时间】:2016-02-26 05:45:51
【问题描述】:
class Topping(models.Model):
    name = models.CharField(max_length=30)

class Pizza(models.Model):
    name = models.CharField(max_length=50)
    toppings = models.ManyToManyField(Topping)

是否可以选择带有浇头的比萨,但只选择具有一定数量浇头的比萨,例如 0、1、2?

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    您可以通过注释查询集来过滤浇头的数量,然后对其进行过滤。

    from django.db.models import Count
    
    pizzas = Pizza.objects.annotate(
        num_toppings=Count('toppings'),
    ).filter(num_toppings__lt=3)
    

    然后您可以像使用其他查询集一样使用prefetch_related

    pizzas = Pizza.objects.annotate(
        num_toppings=Count('toppings'),
    ).filter(num_toppings__lt=3).prefetch_related('toppings')
    

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2015-08-23
      • 2019-03-03
      • 1970-01-01
      • 2021-08-27
      • 2016-11-28
      相关资源
      最近更新 更多