0

フィールドを持つモデルがあり、activeこのフィールドに基づいて非アクティブなすべてのレコードを除外したいと思います。まあ言ってみれば:

Record(Model):
    active = BooleanField()
    ...

それらを除外するために私はすることができます:

Record.objects(active=True)

しかし、これは一般的なケースであり、非アクティブなレコードをほぼいつでも除外する必要があります。DRYの原則に従い、上記の例のように手動で行うすべてのリクエストをフィルタリングせず、その間、管理パネルで非アクティブなレコードを管理する機能を維持するための最良の方法は何ですか。

4

1 に答える 1

1

マネージャを使用して、このタスクを実行できます。

# First, define the Manager subclass.
class ActiveManager(models.Manager):
    def get_query_set(self):
        return super(ActiveManager, self).get_query_set().filter(active=True)

# Then hook it into the Record model explicitly.
class Record(models.Model):
    active = BooleanField()

    objects = models.Manager() # The default manager.
    active_objects = ActiveManager() # The specific manager.

#to filter for all active records you can do:
Record.active_objects.all()
于 2012-10-13T15:14:28.837 に答える