У меня есть пользовательское list_display поле, которое ответственно за столбец целых чисел на одной из моих администраторских страниц.
Я должен позволить сотрудникам виду согласно ему.
Существует решение для того, как достигнуть этого, если целое число представляет количество/среднее число/и т.д. некоторого поля DB, которое не имеет место для меня.
[решение для того случая здесь: администратор Django: как отсортировать по одному из пользовательских list_display полей, которое не имеет никакого поля базы данных]
Какие-либо идеи, как я могу достигнуть этой сортировки, на самом деле не создавая и поддерживая поле DB для значений?
Сортировка выполняется в движке БД (в порядке следования), поэтому я не думаю, что вы сможете добиться желаемого, если не материализуете поле в модели. Вычисленные состояния на данном этапе не могут быть отсортированы (по крайней мере, не в интерфейсе администратора, если вы использовали свой собственный интерфейс, вы могли бы использовать extra ).
Если проблема заключалась в фильтрации, вы могли бы написать собственный FilterSpec (который нигде не документирован, но у SO есть хороший пример ).
Но для сортировки в админке, боюсь, единственный вариант - это материализованное поле.
Редактировать:
Хммм ...
Вы могли бы кое-что попробовать. Возможно (хотя я не думаю, что это где-либо официально задокументировано) изменить набор запросов, используемый ModelAdmin. Если ваше вычисляемое поле достаточно простое, чтобы быть встроенным в сам запрос, вы можете сделать что-то вроде:
class BlahAdmin(admin.ModelAdmin):
... Whatever definitions ...
def queryset(self, request):
return Blah.objects.extra(select={'computed': "count(field_x)"})
Это может сработать. Однако это не проверено.