Skip to main content
 首页 » 编程设计

python之如何将图像上传的标题更改为 Django 类中的名称

2025年05月04日38Leo_wl

我知道这个问题已经被问过几次了,但我是 django 的新手,在文档或这里找不到它。我想将图片上传到一个类(class),名称应该与类(class)名称相同。

模型:

import os  
 
def upload_to_company(instance, filename): 
    blocks = filename.split('.') 
    ext = blocks[-1] 
    filename = "%s.%s" % (Cars.name, ext) 
    instance.title = blocks[0] 
    return os.path.join('media/', filename) 
 
    class Cars(models.Model): 
        image_file = models.ImageField(upload_to=upload_to_company, null=True, blank=True) 
        name = models.CharField(max_length=200) 

如何获取汽车类的名称?我以为 Cars.name 会这样做,但事实并非如此。

有人可以帮忙吗?

谢谢!

请您参考如下方法:

获取类名使用

Cars.__name__ 

如果您遍历一个对象(例如 camaro = Cars()),请使用

camaro.__class__.__name__ 

如果您想根据其他模型属性之一来命名图像(例如 name)

def upload_to_company(instance, filename): 
    if hasattr(instance, 'imgpath'): 
        if os.path.exists(instance.imgpath): 
            os.remove(instance.imgpath) 
    blocks = filename.split('.') 
    ext = blocks[-1] 
    filename = "%s.%s" % (instance.name, ext) 
    instance.title = blocks[0] 
    instance.imgpath = os.path.join('media', filename) 
    return instance.imgpath 

注意:这将始终替换现有文件。

最后,正确缩进:Cars 类似乎是在 upload_to_company 函数中定义的。