0

我有一个带有属性的模型,我希望 adminmodel 由它来排序。

class StoreAdmin(admin.ModelAdmin):
    list_display = ('user', 'total',)

admin.site.register(Store, StoreAdmin)

模型:

class Store(models.Model):
    user = models.ForeignKey(User, related_name="store")

    @property
    def total(self):
        num = 0
        for x in Coins.objects.all():
            num += x.value
        return num

既然 ModelAdmin 是一个属性,你如何按总数排序?在此先感谢您的帮助!

4

1 回答 1

0

给这个链接一个镜头,因为它可能有你的答案。https://stackoverflow.com/a/8478586/1011998

简而言之,由于您尝试排序的属性在 SQL 中不存在,因此 SQL 必须返回所有结果,然后在 Python 中按您的属性对它们进行排序。可以想象,这要慢得多。

我建议考虑将字段“total”作为非规范化字段(int)存储在数据库中的字段中,并在通过覆盖该save()方法更新用户对象时简单地更新它。这样,您就可以从不必不断地动态重新计算总数的速度(稍后在处理中大数据时变成 SQL)和 MySQL 索引的速度(始终考虑您的“位置”)中受益。和“order by”子句)。

于 2013-04-20T11:39:02.203 回答