Python 使用Django ORM将JSON数据转换为SQL数据库中的结构化数据

Python 使用Django ORM将JSON数据转换为SQL数据库中的结构化数据,python,django,database-design,Python,Django,Database Design,我正在使用Django和MySQL后端构建一个聊天机器人。 我有一个ChatSession模型,它表示聊天会话结束后要存储的所有有用信息 现在,它有一个名为cc\u data的JSON字段(使用实现) 以下是该字段内容的示例: { "slots":{ "chal_tech":"What is the Proof", "nats":["I will fail the course","Nobody likes me"], "distortion":"Jumping to

我正在使用Django和MySQL后端构建一个聊天机器人。 我有一个
ChatSession
模型,它表示聊天会话结束后要存储的所有有用信息

现在,它有一个名为
cc\u data
的JSON字段(使用实现)

以下是该字段内容的示例:

{
  "slots":{
    "chal_tech":"What is the Proof",
    "nats":["I will fail the course","Nobody likes me"],
    "distortion":"Jumping to Conclusions",
    "user_name":"parth",
  }
}
我最近意识到我需要在这个
slots
字典中查询一些字段。一个示例查询是列出最近10个聊天会话中的所有
nat

似乎将JSON的所有值读入DICT,然后搜索/操作它们是低效的。因此,我试图将此JSON表示转换为Django ORM模型(SQL)

然而,在尝试这样做时,我遇到了一个问题。
slot
字典中的“键”数量可能是有限的,但我不知道此时需要多少键。无论如何,这将是一个很大的数字(大约50-100)

  • 手动为
    models.py中的这么多属性编写模型类似乎效率低下,而且有点重复(大多数模型都只有一个
    JSONfield
    TextField
    )。即使使用抽象模型,我仍然必须列出
    models.py
    文件中所有“键”的类
  • 理想情况下,我希望自动动态地为任何新的“关键点”生成模型类。我确实看过,但没有一个解决方案看起来真的有效。我使用的主机不支持NoSQL,因此我无法使用该解决方案

如何将其转换为有效的Django ORM/SQL设计,以使查询高效且代码不重复?

为Django选择一个新模型,或者使用PostgreSQL,为什么要为新密钥生成新模型?有对象FK、种类(插槽名称)和内容(不管您喜欢什么,文本或json)的模型就足够了吗?@awesoon这就是我想做的。然而,有一点需要注意的是,如果槽的内容是JSON本身,我需要搜索其中的键,那么我再次遇到同样的问题。为Django选择一个,或者使用PostgreSQL,为什么要为一个新键生成一个新模型?有对象FK、种类(插槽名称)和内容(不管您喜欢什么,文本或json)的模型就足够了吗?@awesoon这就是我想做的。然而,有一点需要注意,如果槽的内容是JSON本身,并且我需要搜索其中的键,那么我再次遇到同样的问题。