我的模特:
class MedicineType(models.Model):
name = models.CharField(max_length=100)
image = models.ImageField(upload_to='images/', max_length=255, null=True)
settings.py 中的
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
现在,当我从浏览器上传图像时,图像的url作为绝对路径存储在数据库中。例如,名为' example.png'将会有
http://localhost:8000/media/images/example.png
但我希望只有相对路径才会存储在数据库中。不与localhost和端口。我该怎么做?
答案 0 :(得分:1)
你是怎么做的?
是什么让你认为Django将http://localhost:8000/media/images/example.png
存储在您的数据库中?如果这就是django的作用,那么通过更改python manage runserver 8010
的端口意味着所有上传的内容都会中断?
不,这不是Django所做的。见this from the documentation:
>>> car = Car.objects.get(name="57 Chevy")
>>> car.photo
<ImageFieldFile: chevy.jpg>
>>> car.photo.name
'cars/chevy.jpg'
>>> car.photo.path
'/media/cars/chevy.jpg'
>>> car.photo.url
'http://media.example.com/cars/chevy.jpg'
上面应该解释发生了什么。请查看上面的链接了解更多详情。
car.photo.name
IS Django在数据库中存储的内容。 car.photo.url
或care.photo.path
就是您认为存储在数据库中的内容。