我需要保存文件,但文件的数量是不确定的,在一个请求中我可以添加一个文件,然后在另一个请求帖子中,我可以再添加一个文件
出于这个原因,我认为创建一个JSONField类型字段可以帮助我解决这个问题,但我不知道这是否可能,如果可能,我不知道如何在Django中实现它
以下是我当前如何将单个文件上载到Django模型的示例:
import uuid
import time
from users.models import User
from django.db import models
def upload_location(instance, filename):
filebase, extension = filename.split('.')
milliseconds = int(round(time.time() * 1000))
return 'events/thumbnail_images/%s__%s__%s.%s' % (instance.user_id, instance.name, milliseconds, extension)
class Test(models.Model):
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
image_link = models.FileField(upload_to=upload_location)
user = models.ForeignKey(
User,
null=True,
blank=False,
on_delete=models.CASCADE
)
由于我使用的是Postgres关系数据库,而且我不确定用户要保存多少文件,所以我使用了JSONField,因此当用户添加文件时,也会添加“路径+文件名”
有可能吗?如何制作
对于文件,我只是以图像为例
然后在forms.py文件中执行以下操作
然后执行views.py
同样,在HTML中,您需要呈现这个表单,正如您所说的,它可能会被一次又一次地请求。根据我的理解,这是最简单的方法。您可以添加任意数量的文件,只要在视图中为ImageClass模型提供相同的外键即可:)
我建议您创建一个单独的模型
Attachment
,并通过向Attachment
模型添加ForeignKey
字段或按所需模型使用ManyToManyField
来建立与此模型的关系使用这种方法,您可以将许多文件添加到所需的模型中
下面是
Attachment
模型的一个示例:相关问题 更多 >
编程相关推荐