Django将生成器转换为列表

时间:2011-02-01 17:58:37

标签: django django-voting

我正在使用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()

有什么想法吗?

1 个答案:

答案 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课程,那么对我来说似乎很奇怪 - 您缺少字段等等。)