Django 管理者のリスト表示に絶対 URI を表示しようとしています。
from django.contrib import admin
class MyAdmin(admin.ModelAdmin):
list_display = (
'full_uri',
)
readonly_fields = (
'full_uri',
)
def full_uri(self, obj):
return u'<a href="{url}">{url}'.format(
url = request.build_absolute_uri(reverse('view_name', args=(obj.pk, )))
)
full_uri.allow_tags = True
build_absolute_uri
問題 - (定義されている) リクエスト オブジェクトにアクセスできません。
changelist_view
リクエストのローカルをオーバーライドして保存しようとしましたが、これはスレッドセーフではありません。
私もこのソリューションを試しましたが、あまりエレガントではありません。
他のアイデアはありますか?
編集:
これは安全な解決策ですか:
def changelist_view(self, request, extra_context=None):
self.request = request
try:
return super(MyAdmin,self).changelist_view(request, extra_context=extra_context)
finally:
self.request = None
EDIT2: