问题描述
我是编程和Django的新手,所以如果这是一个容易回答的问题,请原谅我,但我没有找到任何可靠的答案。
我目前正在旅游预订网站上。我想在巡回课程中为巡回添加几个图像,以便用户可以在巡回详细信息页面上滚动浏览照片。我在此页面https://medium.com/ibisdev/upload-multiple-images-to-a-model-with-django-fd00d8551a1c中引用了如何编写模型的信息,但是该方法是供用户上传文件的,因此它没有解释如何使用现有文件。我应该如何处理这些文件?
正如该链接所说明的,我希望使用一个相册类,然后在Tour类中使用该相册,以便我可以为每个游览使用几张照片,而不仅仅是一个图像字段。
我已经看到您可以将图像直接放入数据库中,但这似乎不是最佳解决方案。是否应将它们存储在静态文件夹中?如果是这样,如何将它们与Tour类中的正确游览相关联?
如果应该将它们存储在数据库中,如何从数据库中调用这些图像并将其显示在html中?
解决方法
您可以在模型中使用django.db.models.FilField
或django.db.models.ImageField
来存储文件名。实际文件将保存在您的媒体文件夹中,关联的文件名将保存在您的数据库中。
确保在MEDIA_ROOT
中声明了MEDIA_URL
和settings.py
来告诉django用户上传的内容和访问方式:
MEDIA_ROOT = '/home/ljdoumas/mysite/media/'
MEDIA_URL = '/media/'
在您的应用程序models.py中,您将需要以下内容:
from django.db import models
class Tour(models.Model):
tour_image = models.ImageField(null=True,blank=True)
您还可以在图像字段中设置参数upload_to
,以指定文件在媒体文件夹中的确切上传位置。
如果您需要多个图像,则可以为图像创建另一个模型,并使用多对多关系将它们连接到游览中