# 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()
Comment pourrais-je trier les clients, selon number_of_orders
ils? Cette propriété ne peut pas être utilisée ici, car elle nécessite un champ de base de données à trier. Est-ce possible parce que Django s'appuie sur la base de données sous-jacente pour effectuer le tri? Créer un champ agrégé pour contenir le nombre de commandes semble être une surcharge ici. La chose amusante: si vous modifiez url manuellement dans le navigateur pour trier sur cette colonne - cela fonctionne comme prévu!Django admin: comment trier par l'un des champs de list_display personnalisés qui n'a pas de champ de base de données
"La chose amusante: si vous modifiez url à la main dans le navigateur pour trier sur cette colonne - il fonctionne comme prévu!" Vous voulez dire:/admin/myapp/client /? Ot = asc & o = 2 Etes-vous sûr? –
oui, à la fois asc et dsc. Peut-être que cela fonctionne avec des décimales. –
Je ne pense pas que cela fonctionnerait avec plusieurs pages. –