django过滤多次或无记录

时间:2017-07-31 18:22:00

标签: django django-models django-orm

我有模特

class Product(models.Model):
    title = models.CharField(...)

class PropertyType(models.Model):
    title = models.CharField(...)

class Property(models.Model):
    property_type = models.ForeignKey(PropertyType)
    product = models.ForeignKey(Product, related_name='properties')
    value = models.CharField(...)

那么,我如何过滤具有某些价值和property_type的属性的产品,并且包含没有具有相同property_type属性的产品

像这样的东西

properties = Property.objects.filter(property_type__pk=12, value='anyValue')
products = Product.objects.filter(Q(properties__in=properties)|
              Q(NO PROPERTY RECORD WITH PROPERTYTYPE__ID=12 FOR PRODUCT))

2 个答案:

答案 0 :(得分:0)

正确的方法是properties = Property.objects.filter(property_type__pk__contains=12, value='anyValue')我没有理解第二个

答案 1 :(得分:0)

根据经验找到答案

properties = Property.objects.filter(property_type__pk=12, value='anyValue')
products = Product.objects.filter(Q(properties__in=properties)|
          ~Q(properties__property_type__pk__in=[12]))