【发布时间】:2021-01-06 12:57:16
【问题描述】:
目前我想在 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)
更新 textFile 字段如下:
@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()
我发现它在 db 上保存了这样的内容: "textFile": "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",
【问题讨论】:
-
settings.MEDIA_ROOT的值是多少? -
它的:“用户/usersxxx/Documents/xxx/media”;如果我直接设置相对路径,好像python不能直接打开相对文件,会报“FileNotFoundError: [Errno 2] No such file or directory”之类的错误