Как вариант - хранить несколько версий объявления. Показывать в поиске последнюю промодерированную (например по временной метке). Остальные может быть тяжело сопровождать в будущем.
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)