Сортировка отображаемого столбца, определенного методом пользовательской модели в интерфейсе администратора 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 

но на данный момент я не могу отсортировать этот первый столбец (он выделен серым цветом, я не могу нажать на его название):

First column of a table in the Django admin interface

Итак, как я могу отсортировать первый столбец в этой таблице администратора, как определено методом __str__() в модели MyObject? (Пожалуйста, обратите внимание, что я не могу изменить саму модель. Я также совсем новичок в Django, поэтому не стесняйтесь детализировать свой ответ, как будто вы говорите с ребенком.)

Back to Top