2016-10-19 28 views
0

模型中的另一個字段的值,我有一些領域的典範:我如何建立一個圖片上傳到一個文件夾,該文件夾的名稱是在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

您需要自定義上傳處理程序。

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

+0

太謝謝你了。我喜歡這個建議。我對django-any-imagefield會給我更多的東西感到困惑。謝謝。 – arcee123

+0

它會給你在管理員使用自動安裝的圖像後端很好的預覽。基本上只是ImageField的擴展。 –

+0

非常感謝。我會給它一個鏡頭。 – arcee123

相關問題