我正在尝试在 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/