Django和South的动态文件路径

时间:2013-07-19 22:58:07

标签: python django dynamic path django-south

我在设置imageField的动态路径时遇到问题。

这是我的models.py

class Imagen(models.Model):

def get_upload_path(self, filename):
  return os.path.join(
  "img/experiencias/experiencia_%d" % self.id_experiencia.id, 'ficha' + '_' + filename)

nombre = models.CharField(max_length=50)
id_experiencia = models.ForeignKey(TipoExperiencia)
imagen = models.ImageField(upload_to= get_upload_path)
caption = models.CharField(max_length=150,blank=True)
alt = models.CharField(max_length=100)

这是我找到的解决方案here

这在更新对象时实际上工作正常,但是当我尝试插入新元素时,插入失败,因为在那一刻self不存在。

我尝试了另一个解决方案here,其建议是重写ImageField方法来自定义upload_to。

问题是我使用南方而且很难to manage custom fields

我使用Django 1.5。我想知道是否存在任何简单的方法来管理django中的动态文件路径

由于

2 个答案:

答案 0 :(得分:1)

或者,您可以覆盖save方法以将文件移动到正确的路径。

class Model(models.Model):
  def save(self, *args, **kwargs):
    instance = super(Model, self).save(*args, **kwargs)
    # your logic here to change the file location
    return instance

答案 1 :(得分:0)

我认为你可以通过Unipath离开这里。

Unipath usage