filestack
является атрибутом класса, и, объявляя его, вы не можете использовать self, поскольку еще не создан объект класса (self
), в любом случае согласно django docs 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)
Если выЕсли вы хотите включить gen_save_path
в класс, вы можете использовать лямбду для вызова 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"