如何在django

时间:2015-07-27 20:37:19

标签: python django class model attributes

我知道这已被问过几次,但我是django的新手,在文档或此处找不到。我想将图像上传到类,名称应该与类的名称相同。

模型:

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会这样做,但事实并非如此。

有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

获取班级名称使用

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函数中定义。