查询Django模型的JSONField的内容

时间:2016-07-25 15:24:37

标签: django postgresql django-models django-orm jsonb

我试图找出一种方法来查询我的模型的特定实例上的postgres JSONField内的数据。

从我所看到的情况来看,如果你有一个JSONField属性,然后选择你的模型的所有实例,其中属性 - >> color =' red'或者其他什么。

所以,让我们举一个更实际的例子,让我们说我们有一个模型Shoe,它有价格和数量以及任何字段,但是还有一个名为{{的JSONField 1}},这是一个对象数组,每个对象都有使每个版本都特殊的东西。

因此,如果Shoe模型的一个实例是Air Jordans,则JSONField的属性可能如下所示:

versions

所以我们可以做两件事,我们可以:

  1. 查询所有具有颜色可用版本的鞋子的型号:黑色(可以返回我们的Air Jordans,还有其他鞋子)或
  2. 查询JSONField版本中color = black的所有对象的模型实例。因此,如果我们已经有[ { color: black, edition: limited, tongueColor: red }, { color: black, edition: standard }, { color: gold, edition: fancy, bright: very } ] 或其他东西,可以在最后使用某些方法或某些内容来返回上面Shoe.objects.filter(name='Air Jordans')所在的前两个对象?
  3. 我可以在网上找到第一个但不是第二个的例子。

    我可以将对象带入内存并从那里进行过滤,但是这个JSONField是我希望存储大量任意数据的地方,因此能够在不将整个blob带入内存的情况下进行查询是非常重要的。 JSONField可以支持吗?