【发布时间】:2018-02-22 16:32:39
【问题描述】:
我的模型上有一个自定义的 .save 方法。该模型具有start_date 和last_edited 值。如果这些值之间的差异超过 14 天,它应该在保存时复制/克隆自身(而不是保存)。
您可能已经看到了问题:无限递归。如果克隆保存了自己,值仍然会相差 14 天,整个复制过程将重新开始。
因此,我想在它们的 .save 参数中传递这些副本 'copy' 参数,以防止它们自己触发复制过程。
为此,我编写了以下代码:
def save(self, *args, **kwargs):
#check if a submission is older than the 'create a new one' threshold
#Create a new one if that is the case
delta = self.last_edited - self.start_date
print(args)
print(kwargs)
if 'copy' in kwargs or 'copy' not in args:
print('cloning!')
if delta.days >= 14:
clone = self
clone.pk = None
clone.save('copy')
super(AssessmentSubmission, self).save(*args, **kwargs)
但是,由于某种原因,clone.save(copy) 没有将“复制”变量传递给 .save 方法。我什至添加了一些打印语句来打印所有args 和kwarg 参数,但都返回空列表/字典。
有谁知道我做错了什么?
【问题讨论】:
标签: python django django-forms