我在django模型上使用json字段:
class JsonTable(models.Model):
data = JSONField()
type = models.IntegerField()
我尝试了下一个查询,它适用于普通的sql字段:
^{pr2}$但这会引发下一个错误:
FieldError: Cannot resolve keyword 'superkey' into field. Join on 'data' not permitted.
有没有办法在json键上使用Django-ORM或一些python库,而不使用原始sql?
版本:Django 1.9b,PostgreSQL 9.4
更新
例2:
JsonTable.objects.filter(type=1).values('data__happykey').annotate(Avg('data_superkey'))
在happykey
上引发相同的错误
经过一番研究,我找到了下一个解决方案:
我不确定order_by(),但documentation说这是必需的。 对于另一个需要的聚合函数类型转换:
^{pr2}$我用另一个模型测试,希望写这段代码不要有误。PostgreSQL 9.6,Django 2.07
如果您使用的是这个包https://github.com/bradjasper/django-jsonfield, 代码中没有用于管理此类模拟相关查询的内容(data\uujson\u key) 由于Json数据是文本,因此必须使用原始sql或更好的方法:使用queryset
extra()
方法,但是在sql中解析Json似乎很困难。在相关问题 更多 >
编程相关推荐