Предположение: вы хотите мягко удалить любую стороннюю модель, которая не имеет поля is_active
. И это не должна быть модель auth.User
, потому что это особый случай.
Сначала я бы создал класс абстрактной модели для реализации поведения мягкого удаления:
class SoftDeleteModel(models.Model):
is_active = models.BooleanField(default=True)
active_objects = SoftDeleteManager()
objects = models.Manager()
class Meta:
abstract = True
Теперь Предположим, у вас есть стороннее приложение с моделью Message
, затем внутри вашего приложения вы можете создать его подкласс:
from 3rdparty.models import Message as ExtMessage
from .models import SoftDeleteModel
class Message(SoftDeleteModel, ExtMessage):
pass
Теперь ваш собственный класс Message
имеет дополнительное поле и менеджер active_objects
, Вам нужно будет makemigrations
и migrate
, потому что будет создана новая таблица для Message
.