Django的自定义数据库存储
django-db-storage的Python项目详细描述
概述
警告:在许多情况下,在数据库中存储文件是一个坏主意。您的数据库将很容易变得臃肿,性能可能会迅速下降。有关详细信息,请参阅此StackExchange post。
这是一个用于将文件存储在数据库而不是文件系统中的自定义存储后端,是django的文件系统存储的替代品。此应用程序的一些优点:
-
不存在对现有模型的更改,它只是工作(如果没有,打开一张票!)
- Django Admin已实现,可用于搜索、上载、下载和管理文件
- 单元测试的100%代码覆盖率
要求
- Python(2.7、3.4、3.5)
- Django(1.8,1.9)
安装
使用PIP安装:
$ pip install django-db-storage
更新settings.py
# Add 'dbstorage' to INSTALLED_APPSINSTALLED_APPS=['dbstorage',]# Optionally set DEFAULT_FILE_STORAGEDEFAULT_FILE_STORAGE='dbstorage.storage.DBStorage'# Choose a root url for uploaded filesMEDIA_URL='/media/'
更新urls.py
urlpatterns=[...dbstorage_url(),]
运行数据库迁移
$ python manage.py migrate
如何使用
模型正常工作不需要修改。
defuser_directory_path(instance,filename):return'user_{0}/{1}'.format(instance.user.id,filename)classMyModel(models.Model):file_field1=models.FileField()file_field2=models.FileField(upload_to='uploads/%Y/%m/%d/')file_field3=models.FileField(upload_to=user_directory_path)