Сортировка отображаемого столбца, определенного методом пользовательской модели в интерфейсе администратора Django
Я хочу иметь возможность сортировать столбец таблицы, определенный с помощью пользовательского метода в админке Django.
Я сузил проблему до этого простого примера в Django:
models.py
:
from django.db import models
class MyObject(models.Model):
name = models.CharField(_("name"), max_length=255)
layers = models.URLField(_("Layers"), blank=True, max_length=1024)
choices = models.TextField(
verbose_name=_("Choice values"),
blank=True,
help_text=_("Enter your choice"),
)
class Meta:
verbose_name = _("Object config")
verbose_name_plural = _("Objects config")
def __str__(self): # my custom method
return self.name
и admin.py
:
from django import forms
from django.contrib import admin
class MyObjectAdminForm(forms.ModelForm):
"""Form"""
class Meta:
model = models.MyObject
fields = "__all__"
help_texts = {
"layers": "URL for the layers",
}
class MyObjectAdmin(admin.ModelAdmin):
form = MyObjectAdminForm
list_filter = ["name",]
search_fields = ["name",]
# I want the first column (__str__) to be sortable in the admin interface:
list_display = ["__str__", ...] # the ... represent some other DB fields
но на данный момент я не могу отсортировать этот первый столбец (он выделен серым цветом, я не могу нажать на его название):
Итак, как я могу отсортировать первый столбец в этой таблице администратора, как определено методом __str__()
в модели MyObject
? (Пожалуйста, обратите внимание, что я не могу изменить саму модель. Я также совсем новичок в Django, поэтому не стесняйтесь детализировать свой ответ, как будто вы говорите с ребенком.)