2009-09-24 75 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