0

次の説明のように管理者ビューを変更します: 外部キーの子の Django 管理変更リスト ビューを表示するにはどうすればよいですか?

私は Customer -> Project -> Action を持っています この方法でプロジェクトのすべてのアクションを取得します:

def related_actions(self, obj):
    from django.core import urlresolvers
    url = urlresolvers.reverse("admin:workflow_action_changelist")
    lookup = u"project__exact"
    text = obj.name
    return u"<a href='%s?%s=%d'>%s</a>" % (url, lookup, obj.pk, text)

ここで、change_list の addlink をカスタマイズしたいと思います。admin change_list は /workflow/templates/admin/workflow/action/change_list.html のテンプレートによって上書きされますが、3 つのモデルはすべて同じテンプレートを使用します。したがって、テンプレートの harcode param として、より良い解決策が必要だと思います行を変更すると

<a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">

<a href="add/?actionstatus=5" class="addlink">

actioncategory は、新しいアクション フォームで事前に選択されています。しかし、各モデルの addlink をオーバーライドするにはどうすればよいでしょうか。

プロジェクト ビューのパラメーターで actionstatus を取得する必要があります。

/workflow/action/?project__exact=5

助言がありますか?

アクションモデルで使用するためのこの疑似的なものはありますか?

 def add(self)
     get param projectid from url 
     return "<a href='/workflow/action/add/%s' target='_blank'>Add Action</a>" % (parent.project id)
4

1 に答える 1

2

私の知る限り、そのようなものはありませんaddchange_list.html、特にobject-list-itemブロックを拡張して
カスタマイズできます。

{% block object-tools-items %}
  <li>
    <a href="{% url cl.opts|admin_urlname:'add' %}{% if is_popup %}?_popup=1{% else %}?{% endif %}{% if "project" in cl.params %}&amp;project={{ cl.params.project }}{% endif %}" class="addlink">
      {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
    </a>
  </li> 
{% endblock %}

これclChangeListインスタンスです。cl.paramsフィルタリングされrequest.GETます。このコードはproject、クエリ文字列に含まれているかどうかを確認し、その値を生成された addlink に追加します。

変更リスト ページの読み込みが完了したときに追加リンクを更新する JS コードを記述することもできます。何かのようなもの

(function($){
$(function(){
var m = window.location.search.match(/[?&]project=([^&]*)/);
if (m){
    var link = $('a.addlink').attr('href');
    $('a.addlink').attr('href', link+(link.match(/\?_popup=1$/)?'&':'?')+'project='+m[1]);
}
});
})(django.jQuery);

一般的なパラメーター操作については、これを確認してください。

于 2012-05-09T13:56:35.623 に答える