0
我想通過不同的權限自定義list_display。 例如,super可以看到「價格」,其他則不是。 admin.pyDjango admin自定義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」只會在change_list頁面中顯示第一個字段。 – JerryLong