我知道有很多关于此的问题,但没有一个能解决我的问题。
我已将模型拆分为模型文件夹下的多个文件,即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/v6hFdvAC和http://pastebin.com/nxYktwHn张贴了模型和堆栈跟踪。
答案 0 :(得分:0)
因为并非所有用户都有文章。如果您看到,Article Class
中的用户外键可以为null。
user = models.ForeignKey(User, null=True, blank=True)
然后当Django尝试对空值应用计数时,它会引发错误。
也许你可以使用类似的东西:
User.objects.objects.filter(article__isnull=False).count()