如何检查是否从django admin调用了save()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查是否从django admin调用了save()相关的知识,希望对你有一定的参考价值。

我想保存两个对象,其中一个通过ForeignKey('self')相关。

我想检查save()方法是通过django admin调用还是来自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 admin调用了方法。谢谢!

答案

目前还不是很清楚你想要实现什么,但看起来你想要递归地调用.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)

我们无法提供更多帮助,因为您没有在问题中提供太多信息。这是ehlp吗?

以上是关于如何检查是否从django admin调用了save()的主要内容,如果未能解决你的问题,请参考以下文章

模型没有出现在 django admin 中

当我从数据库/模型中删除对象时,如何让 Django Admin 删除文件?

如何像在 Django admin 中一样从模型自动创建视图?

如何让 nginx 从不同的端口提供 django admin css 文件

如何使电子邮件存在检查更快?

如何从 django 中的 manage.py 调用不同的设置