gpt4 book ai didi

python - Django 在 MEDIA_ROOT 文件夹中创建文件并将其保存到 FileField

转载 作者:行者123 更新时间:2023-12-05 06:11:27 26 4
gpt4 key购买 nike

目前我想在 MEDIA_ROOT 文件夹下创建一个文件并将其保存到 FileField。我在 SO 网站上搜索,尝试了 django-how-to-create-a-file-and-save-it-to-a-models-filefield 上的方法和其他,但看起来它在我的数据库中保存了绝对路径。

我的模型

class Voice(models.Model):
xxx other field
textFile = models.FileField(null=True,blank=True,default=None,upload_to='text_file', unique=True)

更新文本文件字段如下:

@receiver(post_save, sender=Voice)
def create_text(sender,**kwargs):
xxx
f = open(settings.MEDIA_ROOT + '/text_file/'+ text_file,'w')
queryset = Voice.objects.all()
queryset.filter(pk=voice.pk).update(textFile=File(f))
f.close()

我发现它在数据库上保存了这样的东西:“文本文件”:“http://127.0.0.1:8000/media/Users/usersxxx/Documents/xxx/media/text_file/t5”

虽然不是:

"http://127.0.0.1:8000/media/text_file/t5",

最佳答案

解决了这个问题。问题的根本原因是 python 无法打开具有相对路径的文件。所以我们可以分两步解决这个问题。

  1. 从绝对路径打开文件如下(使用绝对路径)
    f = open(settings.MEDIA_ROOT + '/text_file/'+ text_file + '.txt','w')
    f.close()
  2. 然后更新/保存文件(使用相对路径)
    queryset.filter(pk=voice.pk).update(textFile='text_file/' + text_file + '.txt')

希望可以帮助遇到类似问题的人。

关于python - Django 在 MEDIA_ROOT 文件夹中创建文件并将其保存到 FileField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63975182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com