Django — как реализовать модерацию объекта?
Как вариант - хранить несколько версий объявления. Показывать в поиске последнюю промодерированную (например по временной метке). Остальные может быть тяжело сопровождать в будущем.MODERATION_STATUS_CHOICES = (
        (0, _('Not moderated')),
        (1, _('moderated')),
    )

class Banner(models.Model):
    user = models.ForeignKey(User, related_name='banner_user') # в зависимости от случая объявление можно привязать к другой сущности
    #место для других полей, которые не меняются для объявления

class BannerDetail(models.Model):
    banner = models.ForeignKey(Banner, related_name='bannerdetail_banner')
    name = models.CharField()
    text = models.CharField()
    image = models.ImageField()
    moderation_status = modes.IntegerField(choices=MODERATION_STATUS_CHOICES, default=0)
    time_stamp = models.DateTimeField(auto_now=True)
moderation_status = (..., 
     (999, 'Ревизия для показа') )

Banner:
    name
    text
    image
    moderation_status
Тут много зависит от юзкейса - если у тебя менеджеры не используют агрегацию по истории (по всем историям баннеров), то может ее стоит помеcтить в json поле  - менять то ее вообще нестоит, кроме как дописывать