如何在django模型中获得slu STR STRING值?

时间:2018-03-14 00:23:25

标签: django django-models

基本上,我有3个类(车辆,汽车和摩托车,这两个最后延伸第一个)...在Vehicle类中有main_image属性,它是一个models.ImageField类型,你可以见吼:

class Vehicle(models.Model):
    def __str__(self):
        return self.title

[...]

    main_image = models.ImageField(
        upload_to = 'media/images/' + str(slug) + '/', verbose_name = 'Foto principal',
        null = False
)

因此,str(slug)无法正常工作,因为当我上传图片时,它总是被上传到

/media/images/<django.db.models.fields.SlugField>

何时应该实际上传到

/media/images/(object-slug-value)/

我尝试了许多不同的东西,但其中任何一个都按我想要的方式工作。

如何从slug属性中获取字符串值?

1 个答案:

答案 0 :(得分:0)

您使用的slug是模型中的字段,而不是实例。 upload_to takes a callable,您可以使用它来构建路径:

def get_path(instance, filename):
    return 'media/images/{}/{}'.format(instance.slug, filename)

class Vehicle(models.Model):
    .
    .
    .
    main_image = models.ImageField(upload_to=get_path)