J'essaie de suivre la documentation pour les recherches qui couvrent les relations pour une relation "inverse", trouvé here. Voici mon code modèle:Django "Recherches qui couvrent les relations" Erreur
class Foo(models.Model):
initiator = models.ForeignKey(User)
date_time = models.DateTimeField()
...
Et voici mon code de requête:
...
now = datetime.now()
users = User.objects.filter(foo__date_time__gte = now)
...
Il en résulte l'erreur suivante: django.core.exceptions.FieldError: Impossible de résoudre le mot-clé 'foo' dans champ. Les choix sont: _message_set, date_joined, email, prenom, groupes, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, mot de passe, user_permissions, nom d'utilisateur
Cependant, si je change mon code pour ne pas utiliser l'utilisateur, mais Au lieu de cela, utilisez mon propre type de barre, alors tout fonctionne comme je le souhaiterais sans erreur. Exemple ci-dessous:
class Foo(models.Model):
initiator = models.ForeignKey(Bar)
date_time = models.DateTimeField()
...
...
now = datetime.now()
bars = Bar.objects.filter(foo__date_time__gte = now)
...
Quelqu'un peut-il me expliquer le problème avec le premier code qui utilise le modèle de l'utilisateur comme clé étrangère? Merci d'avance!
EDIT: Je dois préciser que mon code de requête n'est pas dans une fonction de vue, mais dans une fonction utilitaire que j'appelle à l'aide d'une commande manage.py. Si je mets le code de requête dans une vue alors tout fonctionne bien sans erreur! Mais la chose curieuse est que le deuxième exemple de code fonctionne bien dans les scénarios de vue et de gestion.
J'espère que quelqu'un avec un peu plus d'expertise Django que moi peut l'expliquer. Merci!
Avez-vous ajouté l'application dans laquelle 'Foo' est défini dans' INSTALLED_APPS'? –
Merci pour votre réponse Daniel. Oui, mon application est dans INSTALLED_APPS. J'ai édité mon article original pour clarifier que ce code n'est pas dans une fonction de vue, et cela semble faire une différence, bien que je ne sois pas tout à fait sûr pourquoi. – Blade