# 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 вручную в браузере для сортировки по этому столбцу - он будет работать как положено!