Django Admin - 按自定义方法排序

时间:2010-11-22 08:24:07

标签: django django-models django-admin

我知道如果你有一些聚合可以用annotate完成,但是我无法基于自定义方法实现它。 Bellow是我的模型的代码,我希望能够通过_is_registered对结果进行排序。

class Subscribers(models.Model):
    email = models.EmailField(_('E-mail'))
    want_newsletter = models.BooleanField(default = False)

    def get_user(self):
        user = User.objects.filter(email= self.email)
        if user.count()>0:
            return user[0]
        return None

    def _is_registered(self):
        user = self.get_user()
        if user:
            return _('Yes')
        return _('No')

1 个答案:

答案 0 :(得分:1)

出于性能考虑,Django admin仅根据数据库查询进行排序。

因此,为了对带注释的字段进行排序,您必须使用带注释的字段覆盖django.contrib.admin.ModelAdmin.get_queryset,并在class Meta中包含 字段名称{{{ 1 {} oder_by