python 如何在Django中隐藏“list_editable”中分配给“list_display”和“list_display_links”的列?

crcmnpdw  于 2023-01-16  发布在  Python
关注(0)|答案(2)|浏览(146)

我有以下**Person型号**:

# "store/models.py"

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)

然后,我将"first_name""last_name"分配给list_display和list_editable,使它们可编辑,如下所示:

# "store/admin.py"

from django.contrib import admin
from .models import Person

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
    list_display = ("first_name", "last_name") # Here
    list_editable = ("first_name", "last_name") # Here

然后,我得到了下面的错误:
错误:〈类"存储管理员个人管理员"〉:(admin.E124)"list_editable [0]"的值引用"list_display"("名字")中的第一个字段,除非设置了"list_display_links",否则无法使用该字段。
因此,我将"id"赋值给list_display和list_display_links,如下所示:

# "store/admin.py"

from django.contrib import admin
from .models import Person

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):         # Here
    list_display = ("first_name", "last_name", "id")
    list_editable = ("first_name", "last_name")
    list_display_links = ("id", ) 
                        # Here

然后,错误解决了,显示了3列,如下所示。现在,我想隐藏我不需要的第3列"ID"

那么,如何隐藏第3列"ID"

svmlkihl

svmlkihl1#

您可以使用hidden()创建自定义列“hidden”,然后使用@admin.display(description="")对其重命名,然后将其分配给list_displaylist_display_links,如下所示:

# "store/admin.py"

from django.contrib import admin
from .models import Person

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):           # Here
    list_display = ("first_name", "last_name", "hidden")
    list_editable = ("first_name", "last_name")
    list_display_links = ("hidden", )
                          # Here
                   
    @admin.display(description="") # Here
    def hidden(self, obj):
        return ""

然后,您可以只显示所需的2列,如下所示:

wtzytmuj

wtzytmuj2#

在模型管理类中设置列表显示链接=无

from django.contrib import admin
from .models import Person

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
    list_display = ("first_name", "last_name")
    list_editable = ("first_name", "last_name")
    list_display_links = None

相关问题