小编Jer*_*ong的帖子

Django 管理自定义 list_display

我想通过不同的权限自定义list_display。例如,super可以看到“价格”,其他人则看不到。管理员.py

class bookAdmin(admin.ModelAdmin):
    def display_resort(request):
         if request.user.is_super:
             resort_list = ["name", "author", "price"]
         else:
             resort_list = ["name", "author"]
         return resort_list
    list_display = ['display_resort']
Run Code Online (Sandbox Code Playgroud)

但我得到了

display_resort() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)

我认为返回的内容不正确,我也尝试过在元组、迭代和字符串等中返回“resort_list”。但都失败了。简而言之,我想自定义整个 list_display 而不仅仅是其中的一个字段。寻求您的帮助,谢谢。

---在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
Run Code Online (Sandbox Code Playgroud)

这是 get_list_display https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_list_display的文档,但不是很详细。

django admin

3
推荐指数
1
解决办法
3823
查看次数

标签 统计

admin ×1

django ×1