基于缺少反向关系的Pythonically过滤器Django queryset
假设我有两个Django模型,比如产品和制造商,希望找到没有产品的制造商基于缺少反向关系的Pythonically过滤器Django queryset,django,Django,假设我有两个Django模型,比如产品和制造商,希望找到没有产品的制造商 class Product(Model): name = models.CharField() manufacturer = models.ForeignKey(Manufacturer) class Manufacturer(Model): name = models.CharField() 我想生成一组任何产品对象都没有引用的所有制造商对象。我可以想出很多方法来制作这套装置,但是没有一种看起来
class Product(Model):
name = models.CharField()
manufacturer = models.ForeignKey(Manufacturer)
class Manufacturer(Model):
name = models.CharField()
我想生成一组任何产品对象都没有引用的所有制造商对象。我可以想出很多方法来制作这套装置,但是没有一种看起来干净或者像蟒蛇一样
models.Manufacturer.objects.filter(product__name=x)
我希望能够过滤出更像
models.Manufacturer.objects.exclude(product__exists)
我可能会在产品的某些公理/重言式上排除/过滤制造商,但这似乎也不太符合实际。这可以通过使用和过滤器来实现:
from django.db.models import Count
idle = Manufacturers.objects.annotate(num_products=Count('product')).filter(num_products=0)
idle
将包含没有产品的制造商列表,但请记住,他们还将拥有一个属性num\u products
,由于查询,该属性将为0。对于ManyToManyField
: