2017-01-20 4 views
0

を失敗しましたStacktrace:Djangoは管理者list_displayに外部キーを逆に私は、管理list_change上の逆の外部キーを表示するには、トリングだ

File "/venv/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py", line 320, in result_list 
    'results': list(results(cl))} 
    File "/venv/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py", line 296, in results 
    yield ResultList(None, items_for_result(cl, res, None)) 
    File "/venv/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py", line 287, in __init__ 
    super(ResultList, self).__init__(*items) 
    File "/venv/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py", line 199, in items_for_result 
    f, attr, value = lookup_field(field_name, result, cl.model_admin) 
    File "/venv/lib/python2.7/site-packages/django/contrib/admin/utils.py", line 278, in lookup_field 
    value = attr(obj) 
    File "/home/kparsa/boom/myapp/myapp/admin.py", line 299, in links 
    link = obj.book_set().all() 
    File "/venv/lib/python2.7/site-packages/django/db/models/fields/related.py", line 691, in __call__ 
    manager = getattr(self.model, kwargs.pop('manager')) 
KeyError: u'manager' 

これを正しく動作させる方法を知っている人はいますか?私はそれが多くの重複クエリ(行の#を)実行するため

qres = Book.objects.filter(person__id=obj.id).values_list('id', 'name').order_by('name') 
for x, y in qres: 
    links.append('<a href="/admin/mypp/book?q=ID{}">{}</a>'\ 
     .format(x, y)) 

ような何かをしたくない 注意。

答えて

0

エラーは、モデルでrelated_nameを使用したが、代わりにデフォルトのモデル名を使用しようとしていたことによるものです。 重複したクエリの問題を解決するために、私はget_queryset()ですべての結果をクエリし、結果をmemcachedに格納してから、 "リンク"メソッドでキャッシュから取り出しました。 素晴らしい作品です! ここで唯一の危険は、新しいデータがプッシュされたときに同期が外れることです。私は問題を避けるためにキャッシュに100秒のタイムアウトをかけます。

関連する問題