Django: ImportError: 无法导入名称 Coun

2024-05-23 18:47:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚从github上退出,试图在Ubuntu上安装我的应用程序(我最初在家里的Mac上运行我的应用程序)。

我重新创建了数据库并重新配置了settings.py——还更新了模板位置等

但是,当我运行服务器“python manage.py run server”时,会收到一个错误,上面写着:

ImportError: cannot import name Count

我在views.py中导入了Count以使用annotate():

from django.shortcuts import render_to_response
from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.db.models import Count
from mysite.blog.models import Blog
from mysite.blog.models import Comment
from mysite.blog.forms import CommentForm

def index(request):
    #below, I used annotate()
    blog_posts = Blog.objects.all().annotate(Count('comment')).order_by('-pub_date')[:5]

    return render_to_response('blog/index.html', 
                             {'blog_posts': blog_posts})

为什么不工作?

另外,如果我删除“导入计数”行,错误就会消失,我的应用程序也会正常工作。

谢谢, 温伯特

更新:

my models.py如下所示:

from django.db import models

class Blog(models.Model):
    author = models.CharField(max_length=200)
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')

    def __unicode__(self):
            return self.content

    def was_published_today(self):
            return self.pub_date.date() == datetime.date.today()

class Comment(models.Model):
    blog = models.ForeignKey(Blog)
    author = models.CharField(max_length=200)
    comment = models.TextField()
    url = models.URLField()
    pub_date = models.DateTimeField('date published')

    def __unicode__(self):
            return self.comment

更新2

My urls.py如下所示:

from django.conf.urls.defaults import *

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^admin/(.*)', admin.site.root),
    (r'^blog/$','mysite.blog.views.index'),
    (r'^display_meta/$','mysite.blog.views.display_meta'),
    (r'^blog/post/(?P<blog_id>\d+)/$','mysite.blog.views.post'),
)

Tags: djangofrompyimportselfdatereturnmodels
2条回答

我已经更新了Django,结果发现您的import语句是正确的,因为模块结构发生了一些更改。你确定你的Django是最新版本的吗?

听起来你没有使用Django 1.1。打开Django shell并运行

import django
print django.VERSION

如果使用1.1,您应该看到类似(1, 1, 0, 'final', 0)的内容

相关问题 更多 >