无法解析关键字' article'进入田野

时间:2014-09-17 17:10:05

标签: python django

我知道有很多关于此的问题,但没有一个能解决我的问题。

我已将模型拆分为模型文件夹下的多个文件,即models / articles.py,models / core.py等。

当我尝试执行

User.objects.annotate(my_count=Count('article'))

django给了我以下错误:

  

FieldError:无法解析关键字'文章'进入田野。选项包括:access,cfi_store_item_likes,collaborators,comment,date_joined,documentation,email,emailaddress,first_name,groups,id,images,is_active,is_staff,is_superuser,last_login,last_name,listing,logentry,makey,makey_removed,newproduct,note,password ,productdescription,productimage,profile,socialaccount,space_admins,space_members,textdocumentation,tutorial,user_permissions,userflags,username,video

我在models / abstract.py

中有以下代码
class BaseModel(models.Model):
    added_time = models.DateTimeField('added time')
    is_enabled = models.BooleanField(default=True)
    score = models.IntegerField(default=0)

    class Meta:
        abstract = True
        app_label = 'catalog'

我在models / article.py

中有以下内容
class Article(BaseModel):
    url = models.URLField()
    title = models.CharField(max_length=500, null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    image_url = models.URLField(null=True, blank=True)
    rating = models.IntegerField()
    recommendation = models.TextField(null=True, blank=True)
    user = models.ForeignKey(User, null=True, blank=True)
    tags = models.ManyToManyField(ArticleTag, null=True, blank=True)
    comments = models.ManyToManyField(Comment, null=True, blank=True)
    new_user = models.ForeignKey('NewUser', null=True, blank=True)

    class Meta:
        app_label = 'catalog'

    def __unicode__(self):
        return self.title + ' (' + self.url + ')'

我在models / core.py中有以下内容,以及许多其他已列为可用选项的模型。

class Tutorial(BaseModel):
    user = models.ForeignKey(User, null=True, blank=True)
    description = models.CharField(max_length=200, null=True, blank=True)
    url = models.URLField(max_length=200)
    votes = models.IntegerField(default=0)
    images = models.ManyToManyField(Image, related_name="tutorialimages",
                                    null=True, blank=True)

    class Meta:
        app_label = 'catalog'

    def __unicode__(self):
        return self.url

为什么django没有从其他文件的模型中获取我的ForeignKey用户?为什么只从core.py中获取它?

我已在http://pastebin.com/v6hFdvAChttp://pastebin.com/nxYktwHn张贴了模型和堆栈跟踪。

1 个答案:

答案 0 :(得分:0)

因为并非所有用户都有文章。如果您看到,Article Class中的用户外键可以为null。

user = models.ForeignKey(User, null=True, blank=True)

然后当Django尝试对空值应用计数时,它会引发错误。

也许你可以使用类似的东西:

User.objects.objects.filter(article__isnull=False).count()