Django管理-按自定义方法排序

Django管理-按自定义方法排序,django,django-models,django-admin,Django,Django Models,Django Admin,我知道,如果您有一些聚合,可以使用annotate完成,但我无法基于自定义方法实现它。下面是我的模型的代码,我希望能够通过注册对结果进行排序 class Subscribers(models.Model): email = models.EmailField(_('E-mail')) want_newsletter = models.BooleanField(default = False) def get_user(self): user = User

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

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')

Django admin仅基于db查询进行排序,以提高性能


所以,为了在带注释的字段上排序,您必须用带注释的字段覆盖
django.contrib.admin.ModelAdmin.get_queryset
,并在
类Meta
中包含该字段名,作为
模型上的
order\u by

您能给出一个代码示例吗?因为我不知道如何在注释中调用该方法(我没有对象可以调用它)