我想在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')
可以这样做吗?如果没有,什么是更好的解决方案?谢谢!
答案 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")
可以创建一个自定义字段来存储多个项目,但这是一个非常糟糕的主意。您必须将数组序列化到数据库中,这使得维护变得非常困难。使用单独的模型意味着您可以轻松存储额外信息,例如上传时间,图像标题等。