2016-04-05 17 views
0

私は、Djando adminに私のカスタムテンプレートにdelete_viewchange_viewのオブジェクトのリストを渡したいです。 nav-barを含むためにbase_site.htmlを修正しました。オブジェクトのリストをビューからナビゲーションバーに渡したいと思います。DjangoのAdminで各ビュー(base_site.html)へのコンテンツの追加

これまでdjango admin index、changelist_view、add_viewについても行いました。私はそれらの機能をオーバーライドし、私が望む余分なコンテンツを追加します。

しかし、私は2つのファットでそれをすることはできません。この考え方は、次のとおりです。

@csrf_protect_m 
@transaction.atomic 
def delete_view(self, request, object_id, extra_context=None): 
    extra_context = extra_context or {}     
    mygetModels = getModels() 
    extra_context["modelsTables"] = mygetModels.getTablesModels() 
    return super(table_NameAdmin, self).delete_view(request, object_id, extra_context) 

私が以前に述べたように、changelist_view、index、およびadd_viewで動作します。しかし、delete_viewchange_viewで作業していません。

+1

で変数を使用することができます-tags /#simple-tags)、管理用テンプレートに含めます。そうすれば、テンプレートコンテキストにいくつかの項目を追加するだけで、管理者ビューごとにオーバーライドする必要はありません。 – Alasdair

+0

まあ...確かに良く見えます。 xrangeの中で私のために クラス= apps.apps.get_models(ddbb) modelClasses = [] (LEN(クラス))::register.simple_tag デフgetTablesModels(自己)@ :だから私は、私のように関数を定義 OBJ = modelClasses + = [obj] return modelClasses 私のインデックス管理テンプレートでどのように呼びますか?私は何かを輸入すべきですか? このタグが返すすべてのリストを調べる必要があります {modelsTables%のアイテムの%}

  • a href = "/ admin/db/{{item.linkDb}} /"> {{item.nameDb} }
  • {%endfor%} –

    +0

    コメントにコードを投稿しないでください。読むことは不可能です。 – Alasdair

    答えて

    1

    あなたが投稿したコードから、なぜあなたのdelete_viewが機能していないのか分かりません。コンテキストにアイテムを追加する別の方法を提案します。

    管理サイトのeach_contextメソッドを無効にしてみてください。これにより、複数のモデル管理メソッドをオーバーライドする必要がなくなります。あなたはDjangoの管理外のテンプレートでこれらの変数を使用したい場合は

    def each_context(self, request): 
        context = super(MyAdminSite, self).each_context(request) 
        context['extra_var'] = 'Extra variable' 
        return context 
    

    は、あなたがcustom template tagまたはcontext processor書くことができます。

    Django 1.9+を使用している場合は、simple_tagデコレータ を使用して、変数の結果を保存することができます。

    {% getTablesModels as modelsTables %} 
    

    次に、[カスタムテンプレートタグ](https://docs.djangoproject.com/en/1.9/howto/custom-templateを書いてみテンプレート

    {% for item in modelsTables %} 
    
    +0

    それは私が欲しいものです。あなたはもう一度それをやった。Alasdair ...;)。ありがとう。 –

    関連する問題