Django:将文件保存到特定位置
Django: Saving file to specific location
我正在尝试找到一种方法,以便在每次上传文件时将文件保存在特定位置。这是我正在使用的模型。
class App(models.Model):
name = models.CharField(max_length=20)
description = models.CharField(max_length=20)
def save(self, *args, **kwargs):
new_media_root = os.path.join(settings.MEDIA_ROOT, self.name)
os.mkdir(new_media_root)
super(App, self).save(self, *args, **kwargs)
class Page(models.Model):
title = models.CharField(max_length=20)
app = models.ForeignKey(App)
file = model.FileField(upload_to=app.name)
从上面的代码片段中,我想要实现的是对于创建的每个应用程序,子页面将文件保存在应用程序的某个位置。正在使用 upload_to=app.name 调用应用名称,但在保存时,创建的文件名为 'None'。我将如何解决这个问题。
如果 upload_to
可调用,则覆盖 generate_filename
函数。
def generate_filename(self, instance, filename):
directory_name = os.path.normpath(force_unicode(datetime.datetime.now().strftime(smart_str(self.app.name))))
return os.path.join(directory_name, self.get_filename(filename))
class Page(models.Model):
title = models.CharField(max_length=20)
app = models.ForeignKey(App)
file = model.FileField(upload_to=generate_filename)
我正在尝试找到一种方法,以便在每次上传文件时将文件保存在特定位置。这是我正在使用的模型。
class App(models.Model):
name = models.CharField(max_length=20)
description = models.CharField(max_length=20)
def save(self, *args, **kwargs):
new_media_root = os.path.join(settings.MEDIA_ROOT, self.name)
os.mkdir(new_media_root)
super(App, self).save(self, *args, **kwargs)
class Page(models.Model):
title = models.CharField(max_length=20)
app = models.ForeignKey(App)
file = model.FileField(upload_to=app.name)
从上面的代码片段中,我想要实现的是对于创建的每个应用程序,子页面将文件保存在应用程序的某个位置。正在使用 upload_to=app.name 调用应用名称,但在保存时,创建的文件名为 'None'。我将如何解决这个问题。
如果 upload_to
可调用,则覆盖 generate_filename
函数。
def generate_filename(self, instance, filename):
directory_name = os.path.normpath(force_unicode(datetime.datetime.now().strftime(smart_str(self.app.name))))
return os.path.join(directory_name, self.get_filename(filename))
class Page(models.Model):
title = models.CharField(max_length=20)
app = models.ForeignKey(App)
file = model.FileField(upload_to=generate_filename)