[英]Django media_url is not correct for filefield
我有一個帶有 model 的 DRF 項目,如下所示:
class MyModel(models.Model):
id = models.UUIDField(default=uuid4, primary_key=True, unique=True)
output_file = models.FileField(null=True, blank=True, max_length=200)
geometry = models.PolygonField()
created_at = models.DateTimeField(auto_now_add=True)
在這個 model 中, output_file是在服務器處理后由應用程序保存的文件(用戶不直接為該字段上傳文件)。 該文件保存在MEDIA_ROOT中的某個位置。
我的MEDIA_ROOT = " /var/www/media/ " 和MEDIA_URL =" /media/ " 和文件例如保存在 " /var/www/media/items/file.txt " 中。
當我序列化這個 model 時,我得到以下結果作為響應 json:
{
"id": "b2544986-4cfd-****-b349-defd3db****",
"output_file": "/media/var/www/media/items/file.txt",
"geometry": "something",
"created_at": "2021-03-08T19:55:42.068976+03:30"
}
如您所見,在 URL 的開頭,我得到了多余的/media/ 。 我的意思是 URL 必須是:
/media/items/file.txt
但我得到: /media/var/www/media/items/file.txt 。
我的問題是什么,我該如何解決?
感謝您的幫助:D
所以我一直在嘗試不同的事情並找到了答案。
所以你有兩個選擇:
from django.core.files import File
obj = MyModel.object.create(**kwargs)
with open(path) as f:
obj.output_file.save(new_name, File(f))
這會將文件保存在/media/items/file.txt中,該文件被重定向到/var/www/media/items/file.txt
obj.output_file = path.replace('/var/www/media/', '/media/')
obj.save()
這就像上面的方法,但您只是手動配置它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.