Comment puis-je obtenir tous les objets dans un modèle Django qui ont une valeur spécifique pour un champ ForeignKey?
-
23-08-2019 - |
Question
J'ai un modèle avec une clé étrangère de « parent »
class Item(models.Model):
parent = models.ForeignKey(Parent)
Ceci est le modèle FK
class Parent(models.Model):
name = models.CharField(blank=True, max_length=100)
def __unicode__(self):
return str(self.name)
Je suis en train d'exécuter une requête qui obtient tous les articles avec un parent de « xyz » je reçois rien
Item.objects.filter(parent="xyz")
Lorsque je tente:
Item.objects.filter(parent.name="xyz")
Ou:
Item.objects.filter(str(parent)="xyz")
Je reçois une erreur:
SyntaxError: keyword can't be an expression
Quelle est la bonne façon de le faire?
La solution
Vous pouvez utiliser un double underscore dans le mot-clé est passé à filter()
aux champs d'accès dans une relation de clé étrangère. Comme ceci:
Item.objects.filter(parent__name="xyz")
Autres conseils
Juste pour référence future pour Googlers, avec les versions récentes de Django, vous devez utiliser une méthode supplémentaire dans le mot-clé. Par exemple, au lieu de parent__name
que vous devez faire parent__name__exact
. Le lien de Cato contient d'autres exemples.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow