Как скрыть столбец, назначенный для "list_display" и "list_display_links" для "list_editable" в Django?
У меня есть 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
Затем, я получил ошибку ниже:
ERRORS: <class 'store.admin.PersonAdmin'>: (admin.E124) The value of 'list_editable[0]' ссылается на первое поле в 'list_display' ('first_name'), которое не может быть использовано, если не установлено значение '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", которая мне не нужна:
Итак, как я могу скрыть третью колонку "ID" ?
Вы можете создать пользовательский столбец "hidden" с помощью hidden()
затем переименовать его с помощью @admin.display(description="")
затем назначить его 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", "hidden")
list_editable = ("first_name", "last_name")
list_display_links = ("hidden", )
# Here
@admin.display(description="") # Here
def hidden(self, obj):
return ""
Тогда вы можете отобразить только 2 колонки, которые вам нужны, как показано ниже:
Установите list_display_links = None в классе modeladmin.
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