モデルの管理変更リストを表示すると、外部キーに対応する列をそれぞれのページにリンクできますか?私は、Barを外部キーとして含むFooオブジェクトを持っています。 Fooの管理変更リストを表示していて、display_list列にBarを含めるように設定している場合、メイン列はFooインスタンスの編集ページにリンクし、Bar列はBooインスタンスの編集ページにリンクします。私は使用されているテンプレートを上書きすることができると理解していますが、それを必要としないソリューションがあれば私は興味がありました。リストの外部キー変更ページへの変更
15
A
答えて
21
リンクのHTMLを返すチェンジリストで使用するカスタムメソッドを定義することができます。述べたように、あなたの質問と
from django.core.urlresolvers import reverse
class MyFooAdmin(admin.ModelAdmin):
list_display = ('foo', 'bar_link')
def bar_link(self, obj):
url = reverse('admin:myapp_bar_change', args=(obj.pk,))
return '<a href="%s">Edit Bar</a>' % url
bar_link.allow_tags = True
一つの問題 - Fooのは、あなたがそのバーの編集ページにリンクすることができますので、1つのバーに、各FOOリンクを棒に外部キーを持っている場合。しかし、各バーは複数のfoosにリンクしているので、 'Fooインスタンスの編集ページ'へのリンクを尋ねるのは意味がありません。あなたが行うことができますのみに設定されたフィルタとFooのためのチェンジページへのリンクは、このバーにリンクインスタンスを示している。
def foo_link(self, obj):
url = reverse('admin:myapp_foo_changelist')
return '<a href="%s?bar=%s">See Foos</a>' % (url, obj.pk)
foo_link.allow_tags = True
1
チェンジ変異体は、すべての変更あなたを離れてクリアしますが、私は、発見し、ダニエルの答えを言っていますすでに終わった。だから、これはそれを修正する方法である:
まず、あなたは、私が行ったようにchangelist_view
またはqueryset
をラップすることによってそれを行うことができ、要求への参照を取得する必要があります。
class CountryAdmin(ModelAdmin):
model = Country
list_display = ('pk', 'continent_changelist')
# ...
def queryset(self, request):
self._get_params = request.GET
return super(CountryAdmin, self).queryset(request)
def continent_changelist(self, obj):
url = reverse('admin:yourapp_country_changelist')
querystring = self._get_params.copy()
querystring['continent__id__exact'] = obj.continent.pk
return u'<a href="{0}?{1}">{2}</a>'.format(
url, querystring.urlencode(), obj.continent)
continent_changelist.allow_tags = True
あなたにフィルタを与えることチェンジリストの行内私は別の質問でこれに答えましたが、これは実際に最初に来た場所なので、ここにそれを記録したいと思いました。 :-)
関連する問題
- 1. 変更主キー、外部キー
- 2. 外部キーの変更
- 3. キーと外部キーの変更
- 4. 変更の外部キー列名
- 5. 外部キー名の変更方法は?
- 6. 外部CSSの変更
- 7. Podio外部IDの変更
- 8. Djangoの管理ページで外部キー項目の名前を変更
- 9. 内部から外部への結合の変更
- 10. Postgresql:外部キー制約のためのアクションを変更する
- 11. Entity Frameworkのリレーションシップ/外部キーの変更 - 維持されない
- 12. django-tables2:外部キー列のデフォルトの列タイトルを変更する
- 13. varcharカラムを別のテーブルの外部キーに変更するSQL
- 14. MySQLの外部キー - データが変更された場合、外部テーブルへのアクションはありません
- 15. フェニックス:チェンジセットは外部キーの変更を考慮しません
- 16. 既存の列を外部キーに変更する
- 17. 外部キー制約を持つoracleの列を変更する
- 18. Djangoは外部キーのデータを変更して保存し
- 19. 外部キーの名前を変更する方法は?
- 20. テーブル名を変更した後の外部キー制約
- 21. 外部キーの名前を変更する
- 22. 変更外部HTMLヘッダーアクティブ
- 23. 1ページの主キーを変更する
- 24. (C#)リスト内のオブジェクトへのアクセス/変更
- 25. ページのアンカーへのロード変更
- 26. Google Cloud Engine - CAからSGへの外部IPアドレスを変更
- 27. mysqlに外部キー制約を持つテーブルプライマリキーを変更する
- 28. テーブルを変更する外部キー参照を追加
- 29. mysql外部キーでbigintにintカラムを変更する
- 30. F#変更可能リストへの追加
私はそれを試してみましょう。私がFooの変更ページにリンクすることは、Fooの変更リストからFooの変更ページへの既定のリンクを維持することです(私はそれではっきりしていないことを認めます)。 – Adam
これは1.4または1.5でのアップデートです(これはDjango自体の素晴らしい追加のようですので、すでに 'contrib.admin'に追加されているかもしれません)? –