【问题标题】:Django change name of image from ImageFieldDjango 从 ImageField 更改图像的名称
【发布时间】:2019-01-05 07:18:23
【问题描述】:

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

这是我的代码

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')

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

【问题讨论】:

    标签: python django image dynamic django-models


    【解决方案1】:

    你可以这样做:

    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')
    

    【讨论】:

    • 工作得非常完美!非常感谢
    • 文件库?你能解释一下吗?
    • 带点的 split 函数将文件名字符串分成两部分。我们在文件库中设置第一部分,在扩展中设置第二部分。
    • 这里要小心。包含多个点 '.' 的文件名将导致 ValueError: Too many values to unpack 异常。例如,“bob.smith.jpg”会抛出异常
    • 是的,我改变了策略
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2015-02-22
    • 1970-01-01
    • 2020-11-19
    • 2013-02-14
    • 2018-10-05
    • 2011-08-17
    相关资源
    最近更新 更多