2010-11-22 304 views
3

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

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

Django admin仅基于db查询进行排序,出于性能考虑。

因此,为了进行排序上标注的字段,你有你的注释字段来覆盖django.contrib.admin.ModelAdmin.get_queryset,包括在class Metaoder_byModel字段名。

+1

你可以给一个代码示例,因为我不知道如何调用注解中的方法(我没有任何对象可以调用它) – 2010-11-22 10:05:02