如何将文件上传到Django中的特定文件夹?

时间:2016-09-17 22:33:56

标签: python django

用户上传2个.ini文件后,我希望将这两个文件保存在以下文件夹中。

MEDIA / uploadedconfigs /打印机/塑料/

但是,它目前正在保存到以下地址。

MEDIA / uploadedconfigs /无/


以下是上传文件的代码。
models.py

def UploadedConfigPath(instance, filename):

    return os.path.join('uploadedconfigs', str(instance.id), filename)

class ConfigFiles(models.Model):

    Printer = models.CharField(_('Printer Model'),
    max_length=100, blank=True, null=True, unique=False)
    Plastic = models.CharField(_('Plastic'),    
    max_length=40, blank=True, null=True, unique=False)
    creator = models.CharField(_('Creator'),
    max_length=40, blank=True, null=True, unique=False)
    HDConfig = models.FileField(_('High Detail'), 
    upload_to=UploadedConfigPath)
    LDConfig = models.FileField(_('Low Detail'), 
    upload_to=UploadedConfigPath)

    pub_date = models.DateTimeField(_('date_joined'), 
    default=timezone.now)

我不是“实例”正在做什么,但我被告知它是什么吐出“无”文件夹名称。我还被告知我可能需要将文件放在一个临时文件夹中,但我不确定这会带来什么。任何帮助,将不胜感激!

2 个答案:

答案 0 :(得分:2)

尝试通过在settings.py

中设置参数来使用原始方法
 MEDIA_ROOT = join(PROJECT_ROOT, '../media/')"
 MEDIA_URL = '/media/'

在您的档案中:

def UploadedConfigPath(instance, filename):
       return os.path.join(settings.MEDIA_ROOT, 'uploadedconfigs/', str(instance.id), '/', filename)

答案 1 :(得分:1)

您可以将函数UploadedConfigPath替换为:

def UploadedConfigPath(instance, filename):
    return os.path.join('uploadedconfigs', 'Printer', 'Plastic', filename)

修改:

这应该这样做:

def UploadedConfigPath(instance, filename):
    return os.path.join('uploadedconfigs', instance.Printer, instance.Plastic, filename)