Django:我们可以使用 django ORM 将 dict 直接加载到数据库吗
Posted
技术标签:
【中文标题】Django:我们可以使用 django ORM 将 dict 直接加载到数据库吗【英文标题】:Django: can we load dict directly to the database using django ORM 【发布时间】:2020-01-31 16:40:26 【问题描述】:我有很多像'title':'***'
这样的字典数据,其中的键类似于表列名。我想使用 django ORM 将所有 dict 直接加载到数据库中。
【问题讨论】:
相似还是相同?您是否有想要在 Django 项目中使用的现有(旧版)数据库?无论哪种情况,您都应该有模型,请包括它们。 我正在使用 SQLite 并定义了模型 您可能希望将数据格式化为例如json 并使用loaddata 命令。 我想在 django 视图中进行操作 【参考方案1】:某些数据库(例如 postgreSQL)内置了对复杂类型(例如列表和 JSON 块)的支持。不幸的是 SQLite 没有。但我们仍然可以完成它。
您需要创建一个自定义字段,将字典序列化和反序列化为 JSON 以供存储和使用。
This Medium 文章给出了很好的概述和解释,但是你关心的部分我复制在下面
class JSONField(Field):
def db_type(self, connection):
return 'text'
def from_db_value(self, value, expression, connection):
if value is not None:
return self.to_python(value)
return value
def to_python(self, value):
if value is not None:
try:
return json.loads(value)
except (TypeError, ValueError):
return value
return value
def get_prep_value(self, value):
if value is not None:
return str(json.dumps(value))
return value
def value_to_string(self, obj):
return self.value_from_object(obj)
【讨论】:
以上是关于Django:我们可以使用 django ORM 将 dict 直接加载到数据库吗的主要内容,如果未能解决你的问题,请参考以下文章