Comment puis-je obtenir tous les objets dans un modèle Django qui ont une valeur spécifique pour un champ ForeignKey?

StackOverflow https://stackoverflow.com/questions/1086341

  •  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?

Était-ce utile?

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

documentation Django

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
scroll top