Hel*_*nar 3 python django django-models
我想在 upload_to 中调用模型类的 self 函数:
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"
Run Code Online (Sandbox Code Playgroud)
但是我收到NameError: name 'self' is not defined错误
filestack是一个类属性,在声明它时,您不能使用 self,因为尚未self创建类 ( ) 的对象,无论如何,根据 django文档 upload_to,它需要两个参数,实例(定义 FileField 的模型的实例)和文件名(最初赋予文件的文件名),因此您可以设置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)
Run Code Online (Sandbox Code Playgroud)
如果你想包含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"
Run Code Online (Sandbox Code Playgroud)