gpt4 book ai didi

python - Django:在 Django 模型中调用自函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:49 25 4
gpt4 key购买 nike

我想在 upload_to 中调用模型类的自函数:

class Foo(models.Model):
filestack = models.FileField(upload_to=self. gen_save_path)

def gen_save_path(self):
"""
gen_save_path: void -> String
Generates the path as a string for fileStack field.
"""
return "some generated string"

但是我得到了 NameError: name 'self' is not defined 错误

最佳答案

filestack 是一个类属性,在声明它时您不能使用 self,因为还没有创建类 (self) 的对象,无论如何根据 django docs upload_to 有两个参数,instance(定义了 FileField 的模型实例)和 filename(最初给文件的文件名),所以你可以设置 upload_to这样的功能

def gen_save_path(instance, filename):
"""
gen_save_path: void -> String
Generates the path as a string for fileStack field.
"""
return "some generated string"

class Foo(models.Model):

filestack = models.FileField(upload_to=gen_save_path)

如果您希望在类中包含 gen_save_path,您可以使用 lambda 调用 self.gen_save_path 例如

class Foo(models.Model):

filestack = models.FileField(upload_to=lambda self, fname:self.gen_save_path(fname))

def gen_save_path(self, filename):
return "some generated string"

关于python - Django:在 Django 模型中调用自函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com