2010-11-22 9 views
3

私はいくつかの集計がある場合は注釈で行うことができますが、カスタムメソッドに基づいて実装することはできませんでした。ベローは私のモデルのコードで、私は_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管理者はパフォーマンスのためにdbクエリのみに基づいてソートを行います。

ので、注釈付きのフィールドでソートするためには、あなたはModeloder_byとしてあなた注釈付きフィールドでdjango.contrib.admin.ModelAdmin.get_querysetをオーバーライドし、class Metaそのフィールド名を含める必要があります。

+1

注釈の中でメソッドを呼び出す方法がわからないため(私はそれを呼び出すオブジェクトがありません) –

関連する問題