Я пытаюсь сохранить несколько наборов в Redis, которые отслеживают модели в Django
class Campaign(models.Model):
advertiser = models.ForeignKey(User)
name = models.CharField(max_length=200)
carriers = models.ManyToManyField(Carrier)
countries = models.ManyToManyField(Country)
@receiver(pre_save, sender=Campaign)
def adserver_clear_cache(sender, **kwargs):
campaign = kwargs['instance']
for con in campaign.countries.all():
r.srem("con:" + str(con.id), campaign.id)
for car in campaign.carriers.all():
r.srem("car:" + str(car.id), campaign.id)
@receiver(post_save, sender=Campaign)
def adserver_save_cache(sender, **kwargs):
campaign = kwargs['instance']
for con in campaign.countries.all():
r.sadd("con:" + str(con.id), campaign.id)
for car in campaign.carriers.all():
r.sadd("car:" + str(car.id), campaign.id)
Проблема в том, что кампания полностью сохраняется до того, как будут сохранены все носители, кампании и т.п. Поэтому я получаю те же данные в pre + post_save. Есть ли способ вызвать функцию, когда все, включая отношения, сохранено?
спасибо!