2011-12-26 107 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") 

它可以使自定义字段来存储多个项目,但它是一个非常糟糕的主意。您必须将数组序列化到数据库中,这使得维护非常困难。使用一个单独的模型意味着您可以存储额外的信息,如上传时间,图片说明等,只需少量额外的努力。