如何检查是否从Django管理员调用过save()

时间:2019-04-01 16:09:51

标签: python django django-models

我要保存两个对象,其中一个对象是通过ForeignKey('self')关联的。

我想检查display(desk_num, desk_array); 是通过django admin调用的,还是从save()本身作为递归方法调用的。因为我要保存该对象的两个实例,而不是无限多个。

模型:

save()

保存代码:

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

我希望保存两个对象,但我不知道如何在每次方法结束时停止调用该程序。 我通过其他方式做到了,但我仍然想知道如何检查django管理员是否调用过该方法。 谢谢!

1 个答案:

答案 0 :(得分:0)

不清楚要实现什么,但是您似乎想递归调用.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)

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