2011-12-26 50 views
0

我想在Django中有一個與多個圖片相關聯的模型。我正在評估可能的選項。在Django模型中的非模型字段

一個模型的一張照片很容易用models.ImageField(...)完成。

但是,我想要一個數組(或設置)的圖片。它可以只是路徑,不一定是ImageField對象。

問題是,我該如何在Django模型中創建該字段?我假設我需要創建一個不屬於models.WhateverField的字段。那可能嗎?我可以定義一個非示範田,如:

class MyModel: 
    name = models.CharField(max_length=10) 
    picture_list = [] 

,然後執行:

def sample_add_picture_view(request): 
    picture = "sample.jpg" 

    model = MyModel.objects.get(id=sample_id) 
    model.picture_list.append(picture) 
    model.save() 

    return HttpResponseRedirect('index.html') 

能這樣做嗎?如果不是,有什麼更好的解決方案?謝謝 !

回答

4

您需要創建兩個單獨的模型,並與一個ForeignKey字段鏈接它們,就像這樣:

class Item(models.Model): 
    name = models.CharField(max_length=255) 

class ItemImage(models.Model): 
    image = models.ImageField(upload_to="item_images") 
    item = models.ForeignKey('Item', related_name="images") 

它可以使自定義字段來存儲多個項目,但它是一個非常糟糕的主意。您必須將數組序列化到數據庫中,這使得維護非常困難。使用一個單獨的模型意味着您可以存儲額外的信息,如上傳時間,圖片說明等,只需少量額外的努力。