Skip to main content

Django 的自定义数据库存储

项目描述

django-db-storage2

.. 图像:: https://travis-ci.org/derekkwok/django-db-storage.svg?branch=master :target: https://travis-ci.org/derekkwok/django-db-storage

.. 图像:: https://coveralls.io/repos/github/derekkwok/django-db-storage/badge.svg?branch=master :target: https://coveralls.io/github/derekkwok/django-db -storage?branch=master

.. 图片::https ://badge.fury.io/py/django-db-storage.svg :目标:https ://badge.fury.io/py/django-db-storage

概述

警告:在许多情况下,将文件存储在数据库中是一个坏主意。您的数据库很容易变得臃肿,性能会迅速下降。有关更多信息,请参阅此StackExchange post_。

.. _StackExchange 帖子:http ://programmers.stackexchange.com/questions/150669/is-it-a-bad-practice-to-store-large-files-10-mb-in-a-database

这是一个自定义存储后端,用于将文件存储在数据库而不是文件系统中,并且是 Django 的 FileSystemStorage 的直接替代品。此应用程序的一些好处:

  • 无需对现有模型进行更改,它就可以工作(如果没有,请开票!)
  • django-admin 实现,可用于搜索、上传、下载和管理文件
  • 单元测试 100% 的代码覆盖率

.. 图片:: http: //i.imgur.com/4g9tmEZt.png :目标:http: //i.imgur.com/4g9tmEZ.png

.. 图片:: http: //i.imgur.com/A2F8xlrt.png :目标:http: //i.imgur.com/A2F8xlr.png

要求

  • Python (3.5+)
  • Django (1.11.17+)

安装

使用 pip:: 安装

$ pip install django-db-storage2

更新settings.py

.. 代码块:: python

# Add 'dbstorage' to INSTALLED_APPS
INSTALLED_APPS = [
    'dbstorage',
]

# Optionally set DEFAULT_FILE_STORAGE
DEFAULT_FILE_STORAGE = 'dbstorage.storage.DBStorage'

# Choose a root url for uploaded files
MEDIA_URL = '/media/'

更新urls.py

.. 代码块:: python

urlpatterns = [
    ...
    dbstorage_url(),
]

运行数据库迁移

::

$ python manage.py migrate

如何使用

模型无需修改即可正常工作。

.. 代码块:: python

def user_directory_path(instance, filename):
    return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(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)

虫子?

在https://github.com/derekkwok/django-db-storage/issues创建一个问题

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-db-storage2-2.0.2.2.tar.gz (8.0 kB 查看哈希)

已上传 source

内置分布

django_db_storage2-2.0.2.2-py2.py3-none-any.whl (8.7 kB 查看哈希

已上传 py2 py3