Я добавил поле is_active
во все свои модели для добавления функций мягкого удаления и добавил пользовательский менеджер для извлечения активных объектов.
class SoftDeleteManager(models.Manager):
def get_queryset(self):
return super(SoftDeleteManager, self).get_queryset().filter(is_active=True)
class Student(models.Model):
is_active = models.BooleanField(default=True)
active_objects = SoftDeleteManager()
objects = models.Manager()
Кроме того, я хочу добавить тот же менеджер active_objects
и к модели auth.User
, но, поскольку эта модель не определена в моей кодовой базе, я не знаю, что делать дальше.
is_active
и изменить менеджера по умолчанию или добавить дополнительного менеджера. - person dirkgroten   schedule 09.02.2020is_active
моделиUser
для обозначения мягкого удаления. В некоторых случаяхis_active
равноFalse
, пока пользователь не подтвердит свой адрес электронной почты. Или пользователи могут быть заблокированы из-за подозрительной активности, гдеis_active
также может быть установлено наFalse
. Поэтому интерпретация этого как удаленного может быть не тем, что вы хотите. - person dirkgroten   schedule 09.02.2020User
— это особый случай, поэтому это не лучший пример стороннего приложения. Для любой другой модели достаточно подкласса если в модели нет поляis_active
(поскольку вам нужно добавить таблицу с этим полем) или если в модели уже есть полеis_active
, используйте прокси-модель. - person dirkgroten   schedule 09.02.2020