Je dispose d'un fichier de modèles qui ressemble à ce qui suit:ChampErreur lorsque annoter sur les clés étrangères
class WithDate(models.Model):
addedDate = models.DateTimeField(auto_now_add=True)
modifiedDate = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Match(WithDate):
...
class MatchFilter(django_filters.FilterSet):
class Meta:
model = Match
class Notify(WithDate):
matchId = models.ForeignKey(Match)
headline = models.CharField(null=True, blank=True, max_length=10)
Pour chaque match, je suis en train d'obtenir un compte de notifier les dossiers qui ont un titre. Donc, mon appel ressemble à
matchObjs = Match.objects.annotate(notifies_made=Count('notify__headline__isnull'))
Ceci continue de lancer une erreur de champ. J'ai simplifié la requête vers le bas pour
matchObjs = Match.objects.annotate(notifies_made=Count('notify'))
Et je reçois toujours le même ChampErreur ... Je l'ai vu ce travail dans d'autres cas (d'autres documents, d'autres questions telles que SO this one) mais je ne peux pas pourquoi je reçois une erreur.
L'erreur spécifique qui est retournée est la suivante:
Cannot resolve keyword 'notify' into field. Choices are: (all fields from Match model)
Quelqu'un at-il la moindre idée de la raison pour laquelle je ne peux pas obtenir cette annotation à travailler sur les tables? Je suis déconcerté après avoir regardé l'autre question SO et divers documents Django où j'ai vu cela fait.
Edit: J'utilise Django 1.1.1
Edit 2: J'ai essayé de renommer le champ matchId pour correspondre juste ... et je l'ai éliminé la classe WithDate, en ajoutant dans la ligne droite addedDate et ModifiedDate dans les définitions de classe de modèle. Aucun de ces changements ne s'est débarrassé du message d'erreur.
Edit 3: Après la reconstruction de mes modèles morceau de fichier par pièce, je me suis rendu l'inclusion de plug-in django-filtre Alex Gaynor a été l'origine du problème. Je ne pensais pas que cela était pertinent au début, mais comme c'est maintenant le cas, j'ai inclus la classe Match FilterSet qui provoque l'erreur. Lorsque je supprime la classe MatchFilter, cela fonctionne très bien. J'essaie de passer en revue le code du filtre django pour comprendre pourquoi cela se passe, mais si quelqu'un d'autre a une idée, je serais très intéressé!
ce n'est pas pertinent à votre problème, mais vous avez une erreur d'indentation dans 'MatchFilter'. –
Oups, le transfert de code à la boîte de texte n'est pas allé aussi proprement que je le pensais. Merci d'avoir fait remarquer cela. Devrait être réparé maintenant! –