1
スタティックテキストを変更フォームの管理ページに挿入できますが、編集中のオブジェクトのコンテキストを使用したいと思っています。django adminをカスタマイズするChangeFormテンプレート/カスタムコンテンツを追加する
たとえば、MyObjectの変更フォームでForeignKey接続オブジェクト(obj
)のIDをリンクとしてURLに書式設定したいとします。
私の管理オブジェクト:
class MyObjectChangeForm(forms.ModelForm):
class Meta:
model = MyObject
fields = ('field1', 'obj',)
class MyObjectAdmin(admin.ModelAdmin):
form = MyObjectChangeForm
list_display = ('field1', 'obj')
def render_change_form(self, request, context, *args, **kwargs):
self.change_form_template = 'admin/my_change_form.html'
extra = {'lame_static_text': "something static",}
context.update(extra)
return super(MyObjectAdmin, self).render_change_form(request,
context, *args, **kwargs)
マイテンプレートtemplates/admin/my_change_form.html
:
{% extends "admin/change_form.html" %}
{% block form_top %}
{{ lame_static_text }}
<a href="http://example.com/abc/{{ adminform.data.obj.id }}?"/>View Website</a>
{% endblock %}
{{adminform.data.obj.id}}
コールは明らかに動作しませんが、私はそれらの線に沿って何かをしたいと思います。
現在のオブジェクトの動的コンテキストを管理変更フォームに挿入するにはどうすればよいですか?
であなたの余分なコンテキストを追加します。 'get_dynamic_info()'はデータベースクエリを任意に実行するだけですか?それは私が望むものではありません。私は、オブジェクトがすでにデータベースにあることを意味する変更フォームなので、(明らかに)何らかの形で利用可能でなければならない問題のオブジェクトのデータのみを必要とします。また、テンプレート内で '{{osm_data}}'としてアクセスされるでしょうか?あなたが実際の解決策としてここに示唆しているものを明確にしていない。 – lollercoaster
変更ビューをレンダリングする 'object_id'へのアクセス権があります。だからあなたはそのオブジェクトを問い合わせて関連するフィールドIDを取得し、それを 'extra_context'として送ることができます。そして、あなたは '{{osm_data}}'としてテンプレート内でこれらの余分なコンテキストを使うことができます。 – Sagar
これは動作確認できます、ありがとう! – lollercoaster