list_filter
должен указывать на поля модели, а не на методы. Вы можете указать его на внешние ключи , но для того, чтобы это работало в вашем случае, вы, должно быть, изменили модель пользователя, которую, как я полагаю, вы не сделали, поскольку вы ее не опубликовали.
Я предполагаю, что сообщение об исключении относится к полю «Компания», потому что вы установили для short_description
«Компания». Несколько вводит в заблуждение, возможно, изменение в Django будет уместным.
Чтобы выполнить пользовательскую фильтрацию, вы можете написать свой собственный FilterSpec
, но он пока не является официальным API.
list_display
может содержать методы, и если вы хотите выполнить сортировку по ним, вы можете указать администратору использовать определенное поле, установив атрибут admin_order_field
, например:
def get_company(self, obj):
# ...
get_company.admin_order_field = 'somefield'