2017-03-16 1 views
0

J'ai un modèle avec un attribut contenant une capacité Int, et une relation FK pour gérer l'utilisation, comme suit:Comment filtrer une requête ORM Django en utilisant une annotation par rapport à un attribut de modèle?

class Container(Model): 
    objects = ContainerManager() 

    capacity = PositiveSmallIntegerField(default=1) 



class Item(Model): 
    container = ForeignKey('Container', related_name='items' 

Le gestionnaire a besoin de trouver des conteneurs qui ont une capacité de réserve à-dire le nombre d'éléments associés à le conteneur. J'utilise une annotation pour compter les éléments, mais ne peut pas travailler sur la façon de comparer cela avec la capacité à savoir quelque chose comme ça ..

get_queryset().annotate(utilisation=Count('items').filter(capacity__gt=utilisation) 

Est-ce possible dans une requête?

Répondre

0

Alors, je réponds à ma propre question au cas où il aide les autres .. la solution consiste à utiliser une expression F() ..

get_queryset().annotate(utilisation=Count('items').filter(capacity__gt=F(utilisation))