我正在尝试将对象存储集成到我的 Django 项目中,我当前的设置包括 Django、DRF 和 PostgreSQL。具体来说,我正在尝试处理从 API 端点上传的图像并将其存储在对象存储中。
class Announcement(models.Model):
image = models.ImageField(upload_to='media/')
现在,当我尝试访问该操作的 API 端点时。该图像存储在我的 base_dir/media 中的某个位置。
这是我的 boto3\存储设置
AWS_ACCESS_KEY_ID = os.environ.get('DO_SPACES_KEY')
AWS_SECRET_ACCESS_KEY = os.environ.get('DO_SPACES_SECRET')
AWS_STORAGE_BUCKET_NAME = os.environ.get('DO_SPACES_BUCKET')
AWS_S3_ENDPOINT_URL = os.environ.get('DO_SPACES_ENDPOINT')
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'media'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, 'static')
MEDIA_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
我尝试重新配置设置但没有成功。我还检查了数据的凭据、媒体文件和运行时值。
我还检查了 postgresql 数据库,其中包含我的对象存储中似乎是图像的 URL。
你真正需要做的是改变你实施你的方法的方式 通过将其转换为二进制来进行模型。
这样它:
class Announcements(models.Model):
image = model.BinaryField()
这样你就可以直接存储了