# admin.py
class CustomerAdmin(admin.ModelAdmin):
list_display = ('foo', 'number_of_orders')
# models.py
class Order(models.Model):
bar = models.CharField[...]
customer = models.ForeignKey(Customer)
class Customer(models.Model):
foo = models.CharField[...]
def number_of_orders(self):
return u'%s' % Order.objects.filter(customer=self).count()
Как я могу отсортировать клиентов в зависимости от number_of_orders
их наличия?
admin_order_field
Свойство здесь использовать нельзя, так как для сортировки требуется поле базы данных. Возможно ли это вообще, поскольку Django полагается на базовую БД для выполнения сортировки? Создание агрегированного поля, содержащего количество заказов, здесь кажется излишним.
Самое интересное: если вы вручную измените URL-адрес в браузере для сортировки по этому столбцу - все будет работать, как ожидалось!