gpt4 book ai didi

python - 为什么 Django 将 postgres JSONField 值作为字符串返回?

转载 作者:太空狗 更新时间:2023-10-30 02:02:17 26 4
gpt4 key购买 nike

环境:

  • Django 1.10.6
  • psycopg2 2.7.1
  • 在 macOS Sierra 上通过 Homebrew 安装 PostgreSQL 9.6.2
  • 通过 Homebrew 安装 Python 3.6.0

示例模型:

from django.db import models
from django.contrib.postgres.fields import JSONField


class Foo(models.Model):
data = JSONField()

当我尝试创建一个对象时,一切都按预期工作:

from myapp.models import Foo
x = Foo()
x.data = {'key1': 'value1'}
x.save()

并且查询按预期工作:

Foo.objects.filter(data__key1='value1').count()
# 1

但是,当我尝试从对象中检索该数据时,.data 属性的值是一个字符串:

from myapp.models import Foo
x = Foo.objects.get(id=1)
x.data
# '{"key1": "value1"}'
type(x.data)
# str

我希望在这里得到一个口述。当试图保存对象时,问题递归地变得更糟

x.save()
x = Foo.objects.get(id=1)
x.data
# '"{\\"key1\\": \\"value1\\"}"'
x.save()
x = Foo.objects.get(id=1)
x.data
# '"\\"{\\\\\\"key1\\\\\\": \\\\\\"value1\\\\\\"}\\""'

最佳答案

原来你不能在同一个项目中使用 django-jsonfield 和 Django 的原生 JSONField 或者你会遇到问题中描述的奇怪行为

https://bitbucket.org/schinckel/django-jsonfield/issues/57/cannot-use-in-the-same-project-as-djangos

关于python - 为什么 Django 将 postgres JSONField 值作为字符串返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42771437/

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