Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django管理员自定义列表\u显示_Django_Admin - Fatal编程技术网

Django管理员自定义列表\u显示

Django管理员自定义列表\u显示,django,admin,Django,Admin,我想按不同权限自定义列表显示。 例如,super可以看到“价格”,而其他人则看不到。 管理员 但是我有 display_resort() takes exactly 1 argument (2 given) 我认为返回的东西不是正确的方法,我也尝试过返回元组、迭代和字符串中的“resort_list”,但都失败了。 简单地说,我想定制整个列表,而不是只显示其中的一个字段。 寻求您的帮助,谢谢 ---在freylis的帮助下,我现在的代码是: class bookAdmin(admin.Mode

我想按不同权限自定义列表显示。 例如,super可以看到“价格”,而其他人则看不到。 管理员

但是我有

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