Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在使用django上载文件时创建一些年/月/日路径_Python_Django - Fatal编程技术网

Python 如何在使用django上载文件时创建一些年/月/日路径

Python 如何在使用django上载文件时创建一些年/月/日路径,python,django,Python,Django,我有这样的模型: class Obs(models.Model): date = models.DateTimeField(auto_now_add=False, verbose_name='Date') description = models.TextField(verbose_name='Description') content = models.FileField(verbose_name='File', upload_to='%Y/%m/%d') ca

我有这样的模型:

class Obs(models.Model):
    date = models.DateTimeField(auto_now_add=False, verbose_name='Date')
    description = models.TextField(verbose_name='Description')
    content = models.FileField(verbose_name='File', upload_to='%Y/%m/%d')
    category = models.ForeignKey(ObsType, related_name='Type', verbose_name='type')
    user = models.ForeignKey(User, verbose_name='User')
def get_obs_upload_path(instance, filename):
    my_custom_date = datetime.now()
    return '%s/%s' % (my_custom_date, filename)

class Obs(models.Model):
    date = models.DateTimeField(auto_now_add=False, verbose_name='Date')
    description = models.TextField(verbose_name='Description')
    content = models.FileField(verbose_name='File', upload_to=get_obs_upload_path)
    category = models.ForeignKey(ObsType, related_name='Type', verbose_name='type')
    user = models.ForeignKey(User, verbose_name='User')
我需要将“上传到”路径设置为“日期”字段,但此日期不是当前日期。 我该怎么做

更新

我用如下函数求解:

def get_upload_to(instance, filename):
    date = unicode(instance)
    date = date.split()[0]  # to delete Time
    date = date.split('-')
    return '%s/%s/%s/%s' % (date[0], date[1], date[2], filename)
在我的例子中,日期表示为2014-01-04。
如果是2014/01/04,则会出现错误。

您应该使用自定义方法指定
上传到
路径,如下所示:

class Obs(models.Model):
    date = models.DateTimeField(auto_now_add=False, verbose_name='Date')
    description = models.TextField(verbose_name='Description')
    content = models.FileField(verbose_name='File', upload_to='%Y/%m/%d')
    category = models.ForeignKey(ObsType, related_name='Type', verbose_name='type')
    user = models.ForeignKey(User, verbose_name='User')
def get_obs_upload_path(instance, filename):
    my_custom_date = datetime.now()
    return '%s/%s' % (my_custom_date, filename)

class Obs(models.Model):
    date = models.DateTimeField(auto_now_add=False, verbose_name='Date')
    description = models.TextField(verbose_name='Description')
    content = models.FileField(verbose_name='File', upload_to=get_obs_upload_path)
    category = models.ForeignKey(ObsType, related_name='Type', verbose_name='type')
    user = models.ForeignKey(User, verbose_name='User')

您应该使用自定义方法指定
upload_to
路径,如下所示:

class Obs(models.Model):
    date = models.DateTimeField(auto_now_add=False, verbose_name='Date')
    description = models.TextField(verbose_name='Description')
    content = models.FileField(verbose_name='File', upload_to='%Y/%m/%d')
    category = models.ForeignKey(ObsType, related_name='Type', verbose_name='type')
    user = models.ForeignKey(User, verbose_name='User')
def get_obs_upload_path(instance, filename):
    my_custom_date = datetime.now()
    return '%s/%s' % (my_custom_date, filename)

class Obs(models.Model):
    date = models.DateTimeField(auto_now_add=False, verbose_name='Date')
    description = models.TextField(verbose_name='Description')
    content = models.FileField(verbose_name='File', upload_to=get_obs_upload_path)
    category = models.ForeignKey(ObsType, related_name='Type', verbose_name='type')
    user = models.ForeignKey(User, verbose_name='User')

是的,但如何将类中的日期放入此函数中?您可以使用
实例
变量,该变量被传递到
获取对象上传路径()
。您可以编写示例吗?我不知道它是怎么工作的。我尝试上传到=获取上传到(日期),但失败了。我正在获取目录名“”并传递一个方法,而不是调用它
upload\u to=get\u upload\u to
而不是
upload\u to=get\u upload\u to(date)
。是的,但是我如何将类中的日期输入这个函数呢?你可以使用
instance
变量,该变量被传递到
get\u upload\u path()
。你能写一个例子吗?我不知道它是怎么工作的。我尝试上传到=获取上传到(日期),但失败了。我正在获取目录名“”并传递一个方法,而不是调用它
upload\u to=get\u upload\u to
而不是
upload\u to=get\u upload\u to(日期)