Django-如何使用ManyToManyField字段进行过滤?
型号:Django-如何使用ManyToManyField字段进行过滤?,django,django-models,Django,Django Models,型号: class Product(models.Model): ... options = models.ManyToManyField(Option, blank=True) class Option(models.Model): ... class ProductVariant(models.Model): ... product = models.ForeignKey(Product, on_delete=models.CASCADE) # p
class Product(models.Model):
...
options = models.ManyToManyField(Option, blank=True)
class Option(models.Model):
...
class ProductVariant(models.Model):
...
product = models.ForeignKey(Product, on_delete=models.CASCADE) # parent product
option = models.ForeignKey(Option, on_delete=models.DO_NOTHING, null=True)
我需要找到所有产品变量
s,其中选项
不属于父产品产品
上的任何选项
我尝试了以下过滤:
ProductVariant.objects.exclude(option_id__in=[o.pk for o in F('product__options')])
但我有以下例外:
'F' object is not iterable
尝试按Count
进行过滤:
ProductVariant.objects.annotate(product_count=Count('option__product')).filter(product_count=0)