Django模型中的非模型字段

时间:2011-12-26 01:53:16

标签: django django-models

我想在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')

可以这样做吗?如果没有,什么是更好的解决方案?谢谢!

1 个答案:

答案 0 :(得分: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")

可以创建一个自定义字段来存储多个项目,但这是一个非常糟糕的主意。您必须将数组序列化到数据库中,这使得维护变得非常困难。使用单独的模型意味着您可以轻松存储额外信息,例如上传时间,图像标题等。