gpt4 book ai didi

Django 管理员自定义 list_display

转载 作者:行者123 更新时间:2023-12-05 02:23:32 32 4
gpt4 key购买 nike

我想通过不同的权限自定义 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']

但是我得到了

display_resort() takes exactly 1 argument (2 given)

我认为返回的东西不在正确的方法中,我也尝试过在元组、迭代和字符串等中返回“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

这里有一个get_list_display的文档https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_list_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_list_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

关于Django 管理员自定义 list_display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641243/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com