模型:
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)
我需要找到ProductVariant
不属于父产品option
上任何options
的所有Product
。
我尝试执行以下过滤:
ProductVariant.objects.exclude(option_id__in=[o.pk for o in F('product__options')])
但是我遇到了以下异常:
'F' object is not iterable
答案 0 :(得分:1)
尝试使用Count
进行过滤:
ProductVariant.objects.annotate(product_count=Count('option__product')).filter(product_count=0)