我的模型中有一个JSON字段,用于存储如下数据:
{ "old_val": {"status": value1},
"new_val": {"status": value2}
}
现在我想改进我的select查询,以便结果包含JSON字段所有的那些元组,
["new_val"]["status"] = value2 and ["old_val"]["status"] !=value1
如何在django中编写此查询。 ???
答案 0 :(得分:0)
这取决于您使用的JSONField和数据库。其中一些只是将json保存到文本字段。如果是这种情况,您无法访问数据库中的部分数据,因此无法对其进行过滤。但是,如果你使用的是PostgreSQL 9.3+,那么你可以使用它的JSON支持和its operators以及额外的:
Something.objects.extra(where=["data->'new_val'->>'status' = %s"], params=["foo"])
请注意,PostgreSQL 9.4的运算符多于9.3。
您还可以查看django-pgjson,它将一些postgresql json运算符的使用封装到自定义查找中(Django 1.7中的新增内容):
Something.objects.filter(data__at_new_val__at_status="foo")
答案 1 :(得分:0)
jsonField基本上是一个String。因此,您必须执行将在任何StringField上执行的查询。
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
... />
希望这对你有用。