如何将图像上传到文件夹,文件夹名称是DJango模型中另一个字段的值

时间:2016-10-19 23:23:38

标签: django

我有一些带有某些字段的模型:

class RankStructure(models.Model):
    RankID = models.CharField(max_length=4)
    SName = models.CharField(max_length=5)
    Name = models.CharField(max_length=125)
    LongName = models.CharField(max_length=512)
    GENRE_CHOICES = (
        ('TOS', 'TOS'),
        ('TMP', 'TMP'),
        ('TNG', 'TNG'),
        ('DS9', 'DS9'),
        ('VOY', 'VOY'),
        ('KTM', 'KTM')
    )
    Genre = models.CharField(max_length=3, choices=GENRE_CHOICES)
    image = models.FileField(upload_to='RANKS/'+<<GENRE>>+'/', blank=True)

在最后一行是图像FileField。我希望该文件夹与流派相关联。因此,如果Genra为TOS,则该文件夹应为RANKS/TOS/image.jpg

如何设置以便这种情况发生? 感谢。

1 个答案:

答案 0 :(得分:1)

您需要一个自定义上传处理程序。

def image_upload_handler(instance, filename):
    return 'RANKS/{genre}/{filename}'.format(
        genre=instance.genre,
        filename=filename
    )

class RankStructure(models.Model):
    image = models.ImageField(upload_to=image_upload_handler, blank=True)

另外,我建议将此用于图片字段:https://github.com/edoburu/django-any-imagefield