如何检查是否从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 中一样从模型自动创建视图?