Django преобразовывает генератор в список
Я использую пакет для django-голосования и пытаюсь заставить его менеджера get_top() работать. Я наткнулся на одну проблему - он производит генератор (из которого на самом деле мне нужно извлекать данные для выбора элементов из базы данных), что мне кажется проблемой.
Проведя два дня в поиске и поиске форумов, я пришел к выводу, что самое близкое к этому заключается в следующем: что такое "объект генератора" в 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 ответ
Может быть, это просто опечатка в вашем примере кода, но ваш class TopIssue
не является производным от класса модели Django. Это также может объяснить, почему вы получаете сообщение об ошибке пропавшего _meta
приписывать.
Изменить: я не знаком с django-голосования, но от просмотра документов, первый аргумент для менеджера get_top()
Функция должна быть моделью Джанго.
Это достигается путем наследования от базового класса, предоставленного Django. Модели Django описаны в документации по модели Django.
Таким образом, по крайней мере, ваш TopIssue
класс должен быть объявлен так:
from django.db import models
class TopIssue(models.Model):
# fields go here
objects = VoteManager() # for integration with django-voting
Ваш класс TopIssue должен быть моделью базы данных, а get_top()
функция должна возвращать самый высокий голосующий экземпляр этой модели. Пожалуйста, опубликуйте оставшуюся часть кода, если у вас есть дополнительные вопросы (мне кажется очень странным, что то, что вы опубликовали, является вашим полным TopIssue
класс - вам не хватает полей и т. д.).