gpt4 book ai didi

json - Django JSONField 和 TextField 的区别

转载 作者:行者123 更新时间:2023-12-04 18:57:44 25 4
gpt4 key购买 nike

我必须将 JSON 字符串保存到 Django 模型中,并且很好奇我应该使用哪种字段类型。我见过一个 JSONField以前用过,但肯定是TextField因为 JSON 是一个字符串,所以会做完全相同的工作吗?

我应该使用什么类型的字段?

最佳答案

这在一定程度上是正确的,但对于 PostgreSQL(现在所有数据库后端,见下文)至少有一个特定的数据库 JSON 字段类型。这意味着您可以根据该字段的内容查询模型。来自 Django 文档 https://docs.djangoproject.com/en/2.0/ref/contrib/postgres/fields/#querying-jsonfield :

>>> Dog.objects.create(name='Rufus', data={
... 'breed': 'labrador',
... 'owner': {
... 'name': 'Bob',
... 'other_pets': [{
... 'name': 'Fishy',
... }],
... },
... })
>>> Dog.objects.create(name='Meg', data={'breed': 'collie'})

>>> Dog.objects.filter(data__breed='collie')
<QuerySet [<Dog: Meg>]>
此外,当您这样做时 dog.data ,字段值会自动转换为其原生 Python 格式,在本例中为字典。使用 TextField 你必须做 data = json.reads(dog.data)作为一个明确的步骤。 (我相信这发生在字段类型的 from_db_value() 方法中。)
2020 年 8 月 4 日更新:从 Django 3.1 开始,JSONField 可用于所有支持的数据库后端 https://www.djangoproject.com/weblog/2020/aug/04/django-31-released/

关于json - Django JSONField 和 TextField 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48172299/

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