2016-10-07 1 views
0

j'ai 3 modèles django:Django choisir parmi des modèles liés

class Property(object): 
    name = ... 
class Object(object): 
    text = ... 
    data_related = models.ManyToManyField('Property',related_name='property_related', through="ObjectProperty") 

class ObjectProperty(object): 
    extra_data = ... 

j'ai besoin de sélectionner un objet qui a au moins 2 propriétés en même temps. Comment puis-je le faire? Par exemple, Objet = [lampe, table, voiture, stylo, ...] Propriété = [rond, rouge, blanc, invisible, doux, ...] Je veux trouver un objet rond blanc et doux .

Je tiens à le faire dans dans 1 queryset

Répondre

0

S'il vous plaît essayer d'utiliser:

from django.db.models.aggregates import Count 

_objects = Object.objects.filter(
    data_related__name__in=['round', 'soft']).annotate(
    count_objects=Count('id')).filter(count_objects__gt=1) 
+0

Votre requête signifie que l'objet possède une propriété douce ou blanc, mais je veux qu'il les a à la fois – maxx

+0

I eu ce que tu veux dire. J'ai mis à jour ma réponse. –