我正在使用django-voting包并且一直试图让它的经理get_top()工作。我偶然发现了一个问题 - 它产生了生成器(实际上我需要从中提取数据以从数据库中选择项目)这对我来说似乎是一个问题。
经过两天的谷歌搜索和阅读论坛后,我最接近的想法是: What is "generator object" in django?
它表示任何生成器都可以通过以下方式转换为列表:
mylist=list(myGenerator)
如果我确实将生成器转换为列表,我会收到以下错误:
'NoneType' object has no attribute '_meta'
以下是我的观点和型号代码:
def main(request):
temporary = TopIssue.objects.get_top(Model=Issue, limit=10)
temp_list = list(temporary)
return render_to_response('main/index.html', temp_list)
from voting.managers import VoteManager
class TopIssue:
objects = VoteManager()
有什么想法吗?
答案 0 :(得分:0)
也许这只是示例代码中的拼写错误,但您的class TopIssue
并非来自Django模型类。这也可以解释为什么您收到有关缺少_meta
属性的错误消息。
编辑:我不熟悉django-voting,但是从浏览文档开始,经理的get_top()
函数的第一个参数必须是Django模型。
您可以通过继承Django提供的基类来实现这一目标。 Django模型在Django Model Documentation中解释。
至少,你的TopIssue
类应该这样声明:
from django.db import models
class TopIssue(models.Model):
# fields go here
objects = VoteManager() # for integration with django-voting
您的TopIssue类应该是数据库模型,get_top()
函数应该返回该模型的最高投票实例。如果您还有其他问题,请发布您的其余代码(如果您发布的内容是完整的TopIssue
课程,那么对我来说似乎很奇怪 - 您缺少字段等等。)