Как сделать Django Admin TabularInline сортированным по настраиваемому полю? - PullRequest
0 голосов
/ 07 мая 2020

В Django Admin легко создать настраиваемое поле на странице списка моделей, например:

    @admin.register(MyModel)
    class MyModelAdmin(admin.ModelAdmin):
        list_display = ('id', 'field1', 'field2', 'custom_field3')

        def custom_field3(self, obj):
            return obj.get_custom_field3_display()
        custom_field3.short_description = 'Custom Field 3'
        custom_field3.admin_order_field = 'field3'  # makes column header sortable

MyModel.field3 будет использоваться для сортировки теперь интерактивного столбца «Настраиваемое поле 3». заголовок на странице списка моделей.

Как я могу добиться того же на встроенной модели? Я могу легко определить настраиваемое поле таким же образом, но строка admin_order_field не дает такого же результата:

    class MyModelInline(admin.TabularInline):
        model = MyModel
        fields = ('id', 'field1', 'field2', 'custom_field3')

        def custom_field3(self, obj):
            return obj.get_custom_field3_display()
        custom_field3.short_description = 'Custom Field 3'
        custom_field3.admin_order_field = 'field3'  # doesn't seem to have any effect
...