2017-07-31 1 views
0

J'ai modèlesfiltre django par ManyToMany ou pas d'enregistrement

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(...) 

Alors, comment puis-je filtrer les produits pour les propriétés avec une certaine valeur et property_type et comprennent les produits qui ont pas de propriété avec la même property_type

Quelque chose comme celui-ci

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)) 

Répondre

0

trouvé la réponse par l'expérience

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])) 
+0

lol en fait ce que je l'ai dit un, de toute façon si ma réponse vous a aidé, pls voteup –

0

la manière correcte est properties = Property.objects.filter(property_type__pk__contains=12, value='anyValue') je ne comprenais pas la deuxième