Кажется в директе есть пример такого кейса.
Пользователь создает объявление, отправляет на модерацию, модератор принимает, оно начинает показываться.
Далее пользователь решил что-то подправить, например тест объявления. Отредактировал и отправил на модерацию. Причем, старый вариант по прежнему показывается в поиске, а новый на модерации.
Т.е. где-то храниться информация об обьекте, а где-то о его отредактированной копии, которая на модерации.
Как это лучше реализовать?
Через две независимых модели? Через наследование моделей? Может с одной моделью, добавив какой-то атрибут. Тогда копии будут храниться втой же таблице. Может еще какие варианты есть?
Вариант 1: Одна таблица
class Banner(models.Model):
name = models.CharField()
text = models.CharField()
image = models.ImageField()
original = models.ForeignKey('self') # если не None, значит это копия
moderation_status = modes.IntegerField()
Вариант 2: две независимых модели
class Banner(models.Model):
name = models.CharField()
text = models.CharField()
image = models.ImageField()
class ModerationBanner(models.Model):
name = models.CharField()
text = models.CharField()
image = models.ImageField()
moderation_status = modes.IntegerField()
Вариант 3: Наследование
class BaseBanner(models.Model):
name = models.CharField()
text = models.CharField()
image = models.ImageField()
class Banner(BaseBanner):
pass
class ModerationBanner(BaseBanner):
original = models.ForeignKey(Banner)
moderation_status = modes.IntegerField()
Если вы решали подобную задачу, то какой вариант использовали?