Как проверить, был ли вызван save () от администратора django - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу сохранить два объекта, один из которых связан через ForeignKey ('self').

Я хочу проверить, был ли метод save() вызван через администратор django или как рекурсивный метод из самого save(). Поскольку я хочу сохранить два экземпляра объекта, а не их бесконечное количество.

Модель:

prev_work = models.ForeignKey('self', on_delete=models.CASCADE,
editable=False, null=True, blank=True)

Код для сохранения:

prev_work = Work(chapter=self.chapter, job=self.job, prev_work=self)
prev_work.save()

Я ожидаю сохранить два объекта, но я не знаю, как остановить вызов программы программой save каждый раз, когда она подходит к концу метода. Я сделал это с помощью других средств, но все же я хотел бы знать, как я могу проверить, был ли вызван метод из администратора django. Спасибо!

1 Ответ

0 голосов
/ 01 апреля 2019

Не очень понятно, чего вы пытаетесь достичь, но похоже, что вы хотите вызвать .save() рекурсивно ограниченное количество раз. Если это так, вы можете использовать собственный аргумент ключевого слова для метода, который работает как флаг или счетчик.

class Work(models.Model):
    def save(self, *args, **kwargs):
        # the default could be the max number of additional calls you want for this method
        call_x_more_times = kwargs.pop('call_x_more_times', 1)

        super().save(*args, **kwargs)
        # ... do other things, if you need to ...

        if call_x_more_times > 0:
            # set argument for next call, decreased by 1
            kwargs['call_x_more_times'] = call_x_more_times - 1
            self.save(*args, **kwargs)

Мы не можем помочь намного больше, так как вы не даете много информации в вопросе. Это тебе помогает?

...