Как переопределить функцию get () / all () / filter () в Django для отложенного удаления? - PullRequest
3 голосов
/ 18 января 2012

Я занимаюсь разработкой сайта регистрации курсов в Django и хочу разрешить ленивое удаление объектов;когда объект удаляется, он просто помечается как удаленный, но на самом деле не удаляется из базы данных.

Я добавляю новое логическое свойство в профили пользователей, которое называется «удалено».Впоследствии я хочу переопределить функции get / all / filter модели, чтобы исключить удаленные объекты при извлечении наборов данных.

Как переопределить функции get по умолчанию?Спасибо.

1 Ответ

7 голосов
/ 18 января 2012

Переопределить get_query_set для менеджера вашей модели

https://docs.djangoproject.com/en/dev/topics/db/managers/#modifying-initial-manager-querysets

class MyManager(models.Manager):
    def get_query_set(self):
        return super(MyManager, self).get_query_set().exclude(deleted=True)
...