时,我有一个模型文件看起来类似于以下内容:FieldError注释过的外键
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 ......我见过在其他情况下,这项工作(其他文件,其他等问题,如this one),但我不明白为什么我得到一个错误。
返回的特定错误如下:
Cannot resolve keyword 'notify' into field. Choices are: (all fields from Match model)
有没有人有一个线索,为什么我不能得到这个注释跨表的工作?看到其他的SO问题以及我看到完成的各种Django文档后,我感到困惑不解。
编辑:我使用Django 1.1.1
编辑2:我已经试过重新命名matchId场只是比赛......我已经消除了WithDate类,添加在addedDate和modifiedDate直进入模型类定义。这些更改都没有摆脱错误消息。
编辑3:一块重建我的模型文件片之后,我认识亚历克斯Gaynor的Django的过滤插件的加入是造成问题。我一开始并不认为这是相关的,但是现在它已经包含了导致错误的Match FilterSet类。当我删除MatchFilter类时,它工作得很好。我试图通过django过滤器代码来弄清楚为什么会发生这种情况,但如果有其他人有想法,我会非常感兴趣!
它与您的问题无关,但在MatchFilter中存在缩进错误。 – 2010-03-31 14:44:07
哎呀,文本框传输的代码没有像我想的那样干净利落。感谢您指出了这一点。现在应该修复! – 2010-03-31 15:00:35