python - 针对 JSONField 的 Django 模型过滤器,其中键包含连字符/破折号

标签 python django postgresql

我正在尝试在 JSONField 上应用模型过滤器,但 JSON 中的键是 UUID。

那么什么时候做类似...

MyModel.objects.filter(data__8d8dd642-32cb-48fa-8d71-a7d6668053a7=‘bob’)

...我收到一个编译错误。 UUID 中的连字符是问题所在。

是否有任何线索可以使用转义字符或其他行为?我的数据库是 PostgreSQL。

更新 1 - 现在添加了 JSON

{
   ‘8d8dd642-32cb-48fa-8d71-a7d6668053a7’: ’8d8dd642-32cb-48fa-8d71-a7d6668053a7’,
   ‘9a2678c4-7a49-4851-ab5d-6e7fd6d33d72’: ‘John Smith’,
   ‘9933ae39-1a27-4477-a9f4-3d1839f93fb4’: ‘Employee’
}

最佳答案

我遇到了同样的问题,我无法使用 __contains,并且发现你可以使用 **kwargs 解包来让它工作,这让你将过滤器作为字符串传递(如果您需要动态过滤器,这也很有用):

kwargs = {
   'data__8d8dd642-32cb-48fa-8d71-a7d6668053a7': 'bob'
}
MyModel.objects.filter(**kwargs)

关于python - 针对 JSONField 的 Django 模型过滤器,其中键包含连字符/破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59036547/

相关文章:

django - 如何使用 HTMX 和 Django 将参数传递给 View ?

django - 已使用不同的查询集进行查找

sql - Rails 5 - ActiveRecord - 过滤 has_many 关系包含但不排除空值

PostgreSQL 复制 - 如何在使用 pg_recvlogical 和 wal2json 读取后更新 LSN? (没有 super 用户)

Python panda read_csv 在导入过程中转换数据时出现数据中值为 "-"的问题

python - 在 scipy 中的曲线拟合线上绘制一个西格玛误差条

python - 将文件实例作为参数传递给 celery 任务引发 "ValueError: I/O operation on closed file"

mysql - 图片使用Postgres和Xojo

python - 给定一个字典和一个序列在 python 中返回它的总数

python - 如何使用 `crontab` 或 `gnome-terminal` 从虚拟环境执行命令