【发布时间】:2015-08-28 20:13:42
【问题描述】:
假设我有以下 Postgres 表,其中包含一个包含 json 值的列:
+----+-------------------------------------------------+
| id | record |
+----+-------------------------------------------------+
| 1 | {"0":"1st value","1":"a value","2":"I value"} |
| 2 | {"0":"2nd value","1":"b value","2":"II value"} |
| 3 | {"0":"3rd value","1":"c value","2":"III value"} |
| 4 | {"0":"4th value","1":"d value","2":"IV value"} |
+----+-------------------------------------------------+
我想为这个表创建一个 django 数据模型,其中每个 json 属性都有一个字段。像这样的:
class RecordTable(models.Model):
id = models.IntegerField(primary_key=True)
zero = models.TextField(db_column='record->\'0\'')
one = models.TextField(db_column='record->\'1\'')
two = models.TextField(db_column='record->\'2\'')
class Meta:
db_table = 'record_table'
这很接近,但不会生成我想要的那种查询。由于处理列名的方式,Django 最终会生成如下所示的 select 语句:
SELECT DISTINCT "record_table"."record->'0'" FROM "record_table" ...
当我真的希望生成的查询看起来像这样时(注意 record->'0' 周围缺少引号):
SELECT DISTINCT "record_table".record->'0' FROM "record_table" ...
我查看了关于自定义字段和自定义管理器的文档,但我没有找到任何可以让我将 json 值拆分为多个数据字段的功能。这可能吗?如果是这样,我将如何去做这样的事情?
【问题讨论】:
标签: python json django postgresql