在Django - Overriding get_form to customize admin forms based on request中,问题是通过挂钩get_form()方法,根据请求对象中用户的权限选择不同的表单。
我想在迭代期间实际调用对象上的方法,该方法使用请求上下文来输出一些信息。
documentation列出了四种挂钩表单显示的方法。
但是功能签名不包括请求对象。如果他们这样做了,你可以写一些类似的东西(注意request
实际上不是一个论点):
class CustomAdmin(admin.ModelAdmin):
list_display = [ 'name', 'user_specific', ]
#
def user_specific(self, obj, request):
return obj.func1(request)
#
output.short_description = 'UserSpecific'
如果用于存储状态,覆盖get_form()
将不是线程安全的......那么最好的方法是什么?
答案 0 :(得分:0)
在你的情况下,我觉得写自己的观点比黑客django的管理网站更好。
但如果你坚持,你可以覆盖changelist_view并记录请求。
class CustomAdmin(admin.ModelAdmin):
list_display = [ 'name', 'user_specific', ]
def changelist_view(self, request, extra_context=None):
self.request = request
return super(admin.ModelAdmin, self).changelist_view(self, request, extra_context)
def user_specific(self, obj):
return obj.func1(self.request)
output.short_description = 'UserSpecific'