遵循Djangos专家提供的通常很聪明的answer,我想实现我自己的后端,覆盖SQLite3和Postgres JSON处理方法.

我做了什么:

  1. created a backends folder in my app directory: dir structure

  2. 把base.py放进go

    from django.db.backends.base.operations import BaseDatabaseOperations
    from django.db.backends.sqlite3.base import DatabaseWrapper as DBW
    import json
    
    class BaseDatabaseOperationsJSON(BaseDatabaseOperations):
        def adapt_json_value(self, value, encoder):
            print("should be called")
            return json.dumps(value, ensure_ascii = False, cls = encoder)
    
    
    class DatabaseWrapper(DBW):
        ops_class = BaseDatabaseOperationsJSON
    
  3. 相应地更改了settings.py(我是这样想的):

    DATABASES = {
        'default': {
            'ENGINE': "Shelf.backends.sqlite3json",
            'NAME': BASE_DIR.joinpath("db.sqlite3"),
        }
    }
    

这将引发错误:

NotImplementedError: subclasses of BaseDatabaseOperations may require a quote_name() method

推荐答案

我认为您非常接近,您只应该子类化sqlite3的操作类,因为它已经包含了如何引用名称等逻辑:

import json

from django.db.backends.sqlite3.base import DatabaseWrapper as DBW
from django.db.backends.sqlite3.operations import DatabaseOperations


class BaseDatabaseOperationsJSON(DatabaseOperations):
    def adapt_json_value(self, value, encoder):
        return json.dumps(value, ensure_ascii=False, cls=encoder)


class DatabaseWrapper(DBW):
    ops_class = BaseDatabaseOperationsJSON

Django相关问答推荐

POST_SAVE接缝有错误

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

如何在Django中显示多个相关对象

没有与给定查询匹配的监视列表

Django:如何 Select 没有其他项目引用的项目?

使用 Pytest 在 Django 中编写测试用例时如何加载特定目录中的所有固定装置

如何连接到 docker 容器中的 postgres 数据库?

如何在Django中制作一个不 Select 以前日期的日期 Select 器

Django - 将 HTML 输出转换为变量

使用 south 重构具有继承的 Django 模型

Django PositiveIntegerField 中的 0 值?

文档中的 Mongoengine creation_time 属性

django - 如何在验证之前处理/清理字段

django- nginx: [emerg] open() "/etc/nginx/proxy_params" 在 /etc/nginx/sites-enabled/myproject:11 中失败(2:没有这样的文件或目录)

Django:创建索引:非唯一,多列

Python:获取异常的错误消息

找不到 msguniq.确保您安装了 GNU gettext 工具 0.15 或更新版本. (Django 1.8 和 OSX ElCapitan)

Django中GROUP BY中注释的聚合

Django 模型(1054,Unknown column in 'field list')

Django - TypeError - save() 得到了一个意外的关键字参数force_insert