2009-09-24 78 views
3

我刚刚从我的github中提取,并尝试在我的Ubuntu上设置我的应用程序(我最初在家中的Mac上运行我的应用程序)。Django:ImportError:无法导入名称Count

我重新创建数据库,并重新配置settings.py - 也更新模板位置等

然而,当我运行服务器“蟒蛇manage.py runserver命令”得到一个错误,指出:

ImportError: cannot import name Count 

我进口伯爵在我的views.py使用注释():

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}) 

为什么不工作?此外,如果我删除“导入计数”行,错误消失,我的应用程序功能正常。

感谢, Wenbert

UPDATE:

我的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

我的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'), 
) 
+0

什么是您的models.py样子?你有Method/Class Count吗? – rh0dium 2009-09-24 03:27:32

+0

你肯定使用相同版本的Django,是吗? – Wogan 2009-09-24 03:33:58

+0

@ rh0dium,我更新了我的帖子。 – wenbert 2009-09-24 03:47:30

回答

1

这听起来像你没有使用Django 1.1。通过开放Django的外壳和运行仔细检查

import django 
print django.VERSION 

你应该看到类似(1, 1, 0, 'final', 0)如果你使用1.1

+0

你说得对。我得到这个:(1,0,2,'final',0)。我使用Ubuntu中的Synaptic Package Manager安装了Django。我将尝试卸载并从Django网站安装一个。 – wenbert 2009-09-24 05:20:21

+0

它工作。非常感谢答案。 – wenbert 2009-09-24 05:25:26

+1

我得到同样的错误,这并没有帮助我。 – Ztyx 2010-11-15 14:52:57

1

我已经更新了我的Django,事实证明您的导入语句是正确的,因为模块结构有所变化。你确定你的Django是最新版本吗?

+0

它不适合我。我收到此错误: 无法导入mysite.blog.views。错误是:没有名为聚合的模块 – wenbert 2009-09-24 03:49:01

+0

你可以发布你的urls.py吗? – freiksenet 2009-09-24 03:56:51

+0

freiksenet,我在上面的问题中加上了urls.py – wenbert 2009-09-24 03:59:30