擅长:python、mysql、java
<p>看来没有一个好的选择。下面是django/contrib/postgres/fields中的一个片段/jsonb.py公司公司名称:</p>
<pre><code>def as_sql(self, compiler, connection):
key_transforms = [self.key_name]
previous = self.lhs
while isinstance(previous, KeyTransform):
key_transforms.insert(0, previous.key_name)
previous = previous.lhs
lhs, params = compiler.compile(previous)
if len(key_transforms) > 1:
return "{} #> %s".format(lhs), [key_transforms] + params
try:
int(self.key_name)
except ValueError:
lookup = "'%s'" % self.key_name
else:
lookup = "%s" % self.key_name
return "%s -> %s" % (lhs, lookup), params
</code></pre>
<p>由此看来,它试图将每个键转换为整数,并尽可能将其用作键。在</p>
<p>下面是一个可以按照您想要的方式进行查询的方法:</p>
^{pr2}$
<p>并以此为依据:</p>
<pre><code>jsonb_integer_keys_to_str(Dog.objects.filter(data__99='FINDME'), 99)
</code></pre>
<p>这个解决方案过于具体,但在这种情况下仍然有效。它所做的就是修改postgres的sql并将引号放在正确的位置。在</p>