Django 从 ImageField 更改图像名称

Fan*_*e27 2 python django image dynamic django-models

我想更改图像的名称,将其重命名为门的颜色。

这是我的代码

class Door(models.Model) :
    image = models.ImageField(upload_to='doors')
    color = models.ForeignKey(Color, on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=10, decimal_places=2, default='119.99')
Run Code Online (Sandbox Code Playgroud)

我看过很多东西,但我还不知道如何去做。
如果您知道我的问题的答案,请帮助我。

Moh*_*Ali 10

你可以这样做:

def upload_location(instance, filename):
    filebase, extension = filename.split('.')
    return 'images/%s.%s' % (instance.color.name, extension)

class Color(models.Model):
    name = models.CharField(max_length=20)


class Door(models.Model) :
    image = models.ImageField(upload_to=upload_location)
    color = models.ForeignKey(Color, on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=10, decimal_places=2, default='119.99')
Run Code Online (Sandbox Code Playgroud)

  • 这里要小心一点。包含多个点“.”的文件名 会导致 ValueError: Too much value to unpack 异常。例如,“bob.smith.jpg”会抛出异常 (2认同)