2012-07-09 33 views
1

当我去开发服务器时,'Tag'对象没有'count'属性,我总是收到这个错误。我不明白为什么在第117行出现错误时,tag.count在以前的代码行中没有产生任何错误?谢谢!'Tag'对象没有'count'属性

这里的错误消息:

AttributeError at /tag/ 
'Tag' object has no attribute 'count' 
Request Method: GET 
Request URL:  
http://127.0.0.1:8000/tag/ 

Django Version: 1.4 
Exception Type: AttributeError 
Exception Value:  
'Tag' object has no attribute 'count' 
Exception Location: /Users/jonathanschen/Python/projects/skeleton/django_bookmarks/django_bookmarks/bookmarks/views.py in tag_cloud_page, line 117 
Python Executable: /usr/bin/python 
Python Version: 2.7.1 
Python Path:  
['/Users/jonathanschen/Python/projects/skeleton/django_bookmarks', 
'/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg', 
'/Library/Python/2.7/site-packages/distribute-0.6.27-py2.7.egg', 
'/Library/Python/2.7/site-packages/nose-1.1.2-py2.7.egg', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', 
'/Library/Python/2.7/site-packages', 
'/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg-info'] 
Server time: Mon, 9 Jul 2012 11:35:33 -0500 

它是指回到代码是这样的:

def tag_cloud_page(request): 
    MAX_WEIGHT = 5 
    tags = Tag.objects.order_by('name') 
    # Calculate tag min and max counts 
    min_count = max_count = tags[0].bookmarks.count() 
    for tag in tags: 
     tag.count = tag.bookmarks.count() 
     if tag.count < min_count: 
      min_count = tag.count 
     if max_count < tag.count: 
      max_count = tag.count 
     #calculate count range. Avoid dividing by zero. 
     range = float(max_count - min_count) 
     if range == 0.0: 
      range = 1.0 
     # Calculate tag weights. 
     for tag in tags: 
      tag.weight = int(
       MAX_WEIGHT * (tag.count - min_count)/range #line 117 
      ) 
     variables = RequestContext(request, { 
      'tags': tags 
     }) 
     return render_to_response('tag_cloud_page.html', variables) 
+2

请在代码中标出117行 – 2012-07-09 16:51:44

回答

2

你用相同的关键字tag遍历tags两次。把你的第二个for循环弄成这个样子:

for related_tag in tags: 

另外,你需要在第二循环改变tag.weight = ...,以便它指的是正确的tagrelated_tag实例。

+0

谢谢阿尔卑斯,作品! – Jonathan 2012-07-09 17:07:31

1

你不说这行是行117我假定这是行:

MAX_WEIGHT * (tag.count - min_count)/range 

您正在使用内用相同的名字“标签”一样迭代器循环,也使用迭代标签。这是行不通的。