2016-06-21 2 views
-1

私はprojectを使ってDjango Rest Frameworkについて学んでいますが、この奇妙なコードを(私にとっては)遭遇しました。Django Basic Manager

class AuthorManager(models.Manager): 
    pass 


class Author(models.Model): 
    objects = AuthorManager() 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 

    def __unicode__(self): 
     return '{} {}'.format(self.first_name, self.last_name) 

私はobjects = AuthorManager()の目的を理解していないし、さらに、なぜ我々は単にpassをやっているマネージャを使用しています。これにはどんな理由がありますか? Djangoのドキュメントから

+0

http://www.django-rest-framework.org/api-ガイド/シリアライザ/ - AuthorManagerはメソッドを作成するはずだが、モデルにはないはずだから、間違いだ。 – dmitryro

+0

@dmitryroあなたが何を意味するのか分かりません – qarthandso

答えて

0

Managerは、データベースのクエリ操作をDjangoのモデルに提供されているインターフェイスです。 Djangoアプリケーション内のすべてのモデルに少なくとも1つのマネージャが存在します。ここで

それがどんな意味を作っていないので、与えられたモデル管理AuthorManagerは、任意のメソッドを提供していません。 将来的には、どんな方法にしたい場合は含めることができます。同様に、著者の名の数をカウントすることは 'qarthandso' です:

class AuthorManager(models.Manager): 
    def count_qarthandso(self): 
     super(AuthorManager, self).get_queryset().filter(first_name='qarthandso').count() 

、どこでも、あなたは次のように使用することができます:

Author.objects.count_qarthandso()