【发布时间】:2013-03-12 19:33:00
【问题描述】:
我正在尝试在 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 并在本地存储请求,但这不是 thread safe。
我也试过this解决方案,但不是很优雅。
还有其他想法吗?
编辑:
这是一个安全的解决方案吗:
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:
【问题讨论】:
标签: django django-admin