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

标签 python django class model attributes

我知道这个问题已经被问过几次了,但我是 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 函数中定义的。

关于python - 如何将图像上传的标题更改为 Django 类中的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662825/

相关文章:

php - 在 PHP 中从父级上下文访问父级的重写方法

python - Django 标签和翻译 - 模型设计

python - 是否可以在 Django 模板语言中定位 html 元素的值?

python - 基于另一个查询集过滤一个查询集

mysql - 海量记录的bulk_create最佳实践

python - 如何在类的 __init__ 函数中使用函数

python - 自动扩展的动态列表

python - 关闭交互式 python session 时结束非守护进程线程

python - 无法将多个字符串添加到列表中

javascript - 如何使一个对象使用两个不同类的函数?