Django管理员自定义列表\u显示
我想按不同权限自定义列表显示。 例如,super可以看到“价格”,而其他人则看不到。 管理员 但是我有Django管理员自定义列表\u显示,django,admin,Django,Admin,我想按不同权限自定义列表显示。 例如,super可以看到“价格”,而其他人则看不到。 管理员 但是我有 display_resort() takes exactly 1 argument (2 given) 我认为返回的东西不是正确的方法,我也尝试过返回元组、迭代和字符串中的“resort_list”,但都失败了。 简单地说,我想定制整个列表,而不是只显示其中的一个字段。 寻求您的帮助,谢谢 ---在freylis的帮助下,我现在的代码是: class bookAdmin(admin.Mode
display_resort() takes exactly 1 argument (2 given)
我认为返回的东西不是正确的方法,我也尝试过返回元组、迭代和字符串中的“resort_list”,但都失败了。
简单地说,我想定制整个列表,而不是只显示其中的一个字段。
寻求您的帮助,谢谢
---在freylis的帮助下,我现在的代码是:
class bookAdmin(admin.ModelAdmin):
def get_list_display(self, request):
default_list_display = super(bookAdmin, self).get_list_display(request)
if request.user.is_super:
default_list_display = ["name", "author", "price"]
else:
default_list_display = ["name", "author"]
return default_list_display
这是一个关于get\u list\u display的文档,但不是很详细。首先,类的所有方法都使用第一个参数
self
,因此您需要定义您的方法,如:
def display_resort(self, request):
if request.user.is_super:
resort_list = ["name", "author", "price"]
else:
resort_list = ["name", "author"]
return resort_list
但这不是django的方式。
您需要在bookAdmin
类中定义get\u list\u display
方法:
class bookAdmin(admin.ModelAdmin):
def get_list_display(self, request):
default_list_display = super(bookAdmin, self).get_list_display(request)
if request.user.is_superuser:
# return any list
return default_list_display
很有效,谢谢。在“如果”部分,我添加了不匹配条件的“else”,它只会在更改列表页面中显示第一个字段。
class bookAdmin(admin.ModelAdmin):
def get_list_display(self, request):
default_list_display = super(bookAdmin, self).get_list_display(request)
if request.user.is_superuser:
# return any list
return default_list_display