Я хочу настраивать list_display с помощью разных разрешений. Например, супер мог видеть «цену», другие - нет. admin.pyDjango admin custom list_display
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, но не очень подробно.
Он работает, спасибо. В разделе «If» я добавляю «else», который не соответствует условию, будет отображать только поле fist на странице change_list. – JerryLong