2011-02-01 11 views
0

私はdjango-votingパッケージを使用しており、マネージャget_top()を動作させようとしています。私は1つの問題に遭遇しました - それは私にとって問題と思われるジェネレータを生成します(実際にはデータベースから項目を選択するためにデータを抽出する必要があります)。Djangoをリストに変換する

グーグルやフォーラムを読んでの2日間を過ごした後、最も近いが、私はこれをしに来たと思う: What is "generator object" in django?

それはどの発電機がして、リストに変換することができることを言う:

mylist=list(myGenerator) 

Althought場合発電機をリストに変換すると、次のエラーが表示されます。

'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

おそらく、これはあなたのサンプルコードでの誤植かもしれませんが、class TopIssueはDjangoモデルクラスから派生したものではありません。これは、紛失した_meta属性に関するエラーメッセージが表示される理由を説明します。

編集:私はジャンゴ投票に慣れていないんだけど、ドキュメントをスキミングから、マネージャのget_top()関数の最初の引数はDjangoのモデルである必要があります。

これは、Djangoが提供する基本クラスから継承することで実現します。 DjangoのモデルはDjango Model Documentationで説明されています。

このように非常に少なくとも、あなたのTopIssueクラスはこのように宣言する必要があります:あなたのTopIssueクラスは、データベースモデルでなければなりません

from django.db import models 

class TopIssue(models.Model): 
    # fields go here 
    objects = VoteManager() # for integration with django-voting 

、およびget_top()機能がトップを返すことになっているが、そのモデルのインスタンスを投票しました。さらなる質問がある場合はコードの残りの部分を投稿してください。あなたが投稿した内容が完全なTopIssueクラスであれば、私には非常に奇妙に思えます。

+0

よくタイプミスがないので、おそらく問題がどこにあるのでしょうか。クラスがDjangoモデルクラスから派生するとき、それはどういう意味ですか?あなたは解決策やドキュメントへの参照を教えてください。 (もしあなたが両方を提供すればベストだと思うので、締め切りが近づいているので問題を早急に解決してくれるかもしれません) – Ruslan

+0

@Ruslan - 私は自分の答えを編集し、有益な情報を追加しました。しかし、TopIssueをモデルにすることなく、これまでのところこれを作ったのは驚くべきことです。どのようにしてデータベースのデータを取得しましたか? –

+0

私はばかです。ありがとう、私は2日間の仕事を殺した。 – Ruslan

関連する問題