Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模型中的非模型字段_Django_Django Models - Fatal编程技术网

Django模型中的非模型字段

Django模型中的非模型字段,django,django-models,Django,Django Models,我想有一个在Django模型,有多个图片与之相关。我正在评估可能的选择 使用models.ImageField(…)可以轻松完成一个模型的一张图片 但是,我想要一组图片。它可以只是路径,不一定是ImageField对象 问题是,如何在Django模型中创建该字段?我假设我需要创建一个不属于模型的字段。WhateverField。可能吗?我是否可以定义非模型字段,例如: class MyModel: name = models.CharField(max_length=10) pi

我想有一个在Django模型,有多个图片与之相关。我正在评估可能的选择

使用
models.ImageField(…)
可以轻松完成一个模型的一张图片

但是,我想要一组图片。它可以只是路径,不一定是ImageField对象

问题是,如何在Django模型中创建该字段?我假设我需要创建一个不属于
模型的字段。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')

这能做到吗?如果不是,还有什么更好的解决方案?谢谢大家!

您需要创建两个单独的模型,并使用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")

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

您需要创建两个单独的模型,并将它们与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")
可以创建一个自定义字段来存储多个项目,但这是一个非常糟糕的主意。您必须将数组序列化到数据库中,这使得维护非常困难。使用单独的模型意味着您可以存储额外的信息,如上传时间、图像标题等,而无需额外的努力