【发布时间】:2021-08-12 13:41:39
【问题描述】:
我有一个模特Contract。当用户创建一个新的Contract 时,他们只需要提供名称。然后,我的代码将生成一个文件,并将其保存在contract_file 中,即FileField。
为此,我有一个生成文件的静态方法,然后我覆盖了django的Model的save方法。
class Contract(models.Model):
name = models.CharField(max_length=150, null=True)
contract = models.FileField(upload_to = 'contrats/', blank=True, null=True)
def save(self, *args, **kwargs):
filename = self.generate_contract()
f = open(filename, "r")
self.contract.save(filename, f)
return super(Refund, self).save(*args, **kwargs)
@staticmethod
def generate_contract():
filename = settings.MEDIA_ROOT + 'test.txt'
f = open(filename, "w")
f.write("content")
f.close()
return filename
不幸的是,这会导致
异常值:调用 Python 对象时超出最大递归深度
我想当我调用 FileField save 方法时,它可能还会以某种方式调用 Contract 的保存方法。但我无法解决这个问题。有没有人有一种方法来执行这个文件生成然后保存它?
【问题讨论】:
标签: django django-models