gpt4 book ai didi

django - 如何编写查询以在 django 的 json 字段中查找值

转载 作者:行者123 更新时间:2023-12-03 13:41:41 24 4
gpt4 key购买 nike

我的数据库中有一个 json 字段,就像

jsonfield = {'username':'chingo','reputation':'5'}

我如何编写查询以便我可以找到用户名是否存在。就像是
username = 'chingo'
query = User.objects.get(jsonfield['username']=username)

我知道上面的查询是错误的,但我想知道是否有办法访问它?

最佳答案

这种用法有点反模式。此外,它的实现不会有正常的性能,而且可能容易出错。
当您需要查找字段时,通常不要使用 jsonfield。正如 Daniel 指出的那样,使用 RDBMS 提供的方式或 MongoDB(其内部运行在更快的 BSON 上)。

由于deterministic of JSON format ,
你可以通过使用 contains 来实现它( regex 在处理多个 '\' 时有问题,甚至更慢),我认为使用 username 不好这样,所以使用 name反而:

def make_cond(name, value):
from django.utils import simplejson
cond = simplejson.dumps({name:value})[1:-1] # remove '{' and '}'
return ' ' + cond # avoid '\"'

User.objects.get(jsonfield__contains=make_cond(name, value))

它工作只要
  • jsonfield 使用相同的转储工具(这里是 simplejson)
  • namevalue不太特别(到目前为止我不知道任何 egde-case,也许有人可以指出)
  • 您的 jsonfield 数据没有损坏(虽然不太可能)

  • 实际上我正在研究一个可编辑的 jsonfield 并考虑是否支持此类操作。否定证明如上所述,感觉就像一些黑魔法,好吧。

    关于django - 如何编写查询以在 django 的 json 字段中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445176/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com