django: использование рекурсии постсохраняет сигнал

Вот ситуация:

Скажем, у меня есть модель A в django. Когда я сохраняю объект (класса A), я должен сохранить, это - поля во все другие объекты этого класса. Я подразумеваю, что мне нужно любой, объект быть копией lat сохранил тот.

Когда я использую сигналы (постсохраните, например), я получаю рекурсию (объекты пытаются сохранить друг друга, я предполагаю), и мой Python умирает.

Я мужчины, я ожидал, что с помощью .save () метод на том же классе в пред/постсохранение сигнал вызовет рекурсию, но просто не знать, как избежать его.

Что мы делаем?

5
задан grucha 14 July 2010 в 13:48
поделиться

1 ответ

Это будет работать:

class YourModel(models.Model):
    name = models.CharField(max_length=50)

    def save_dupe(self):
        super(YourModel, self).save()

    def save(self, *args, **kwargs):
        super(YourModel, self).save(*args, **kwargs)
        for model in YourModel.objects.exclude(pk=self.pk):
            model.name = self.name
            # Repeat the above for all your other fields
            model.save_dupe()

Если у вас много полей, вы, вероятно, захотите перебрать их при копировании в другую модель. Я оставлю это тебе.

5
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: