web-dev-qa-db-fra.com

Django filtre select_related

J'ai les modèles Django suivants.

class A(models.Model):
    tmp = models.ForeignKey(B)
    active = models.BooleanField()

class B(models.Model):
    active = models.BooleanField()
    archived = models.BooleanField()

Maintenant, j'ai la requête suivante.

A.objects.select_related(B).filter(active=True)

Maintenant, cela récupère tous les objets de B. Maintenant, comment puis-je inclure un filtre de active=True et archived=False dans le select_related clause pour le modèle B.

14
Pattu

Comme vous le feriez pour tout autre champ connexe, avec un __ Chercher..

A.objects.select_related(B).filter(active=True, tmp__active=True, tmp__archived=False)

L'utilisation de select related ne change rien ici, son but est de savoir quelles informations sont retournées avec les résultats, cela n'a aucun effet sur le filtrage.

18
Sayse