У меня есть файл моделей, который выглядит примерно так:
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)
Для каждого матча я пытаюсь получить количество записей уведомлений с заголовком. Так что мой звонок выглядит как
matchObjs = Match.objects.annotate(notifies_made=Count('notify__headline__isnull'))
Это продолжает генерировать FieldError. Я упростил запрос до
matchObjs = Match.objects.annotate(notifies_made=Count('notify'))
И я все еще получаю ту же FieldError ... Я видел эту работу в других случаях (другая документация, другие вопросы SO, такие как этот ), но я не могу понять, почему я получаю ошибку.
Конкретная ошибка, которая возвращается:
Невозможно разрешить ключевое слово "notify" в поле. Варианты выбора: (все поля из модели соответствия)
Кто-нибудь знает, почему я не могу заставить эту аннотацию работать между таблицами? Я сбит с толку после просмотра другого SO вопроса и различных документов Django, где я видел, как это было сделано.
Редактировать: я использую Django 1.1.1
Редактировать 2: я попытался переименовать поле matchId, чтобы оно просто совпадало ... и я исключил класс WithDate, добавив addDate иifiedDate прямо в определения класса модели. Ни одно из этих изменений не избавилось от сообщения об ошибке.
Редактировать 3: После реконструкции файла моих моделей по частям, я понял, что включение плагина django-фильтра Алекса Гейнора вызывало проблему. Сначала я не думал, что это актуально, но так как сейчас, я включил класс Match FilterSet, который вызывает ошибку. Когда я удаляю класс MatchFilter, он работает просто отлично. Я пытаюсь пройти через код фильтра django, чтобы выяснить, почему это происходит, но если у кого-то есть идея, мне будет очень интересно!