JSONField
官网介绍
- 用于存储JSON格式数据的字段。在Python中,数据以其Python本机格式表示:字典,列表,字符串,数字,布尔值和None。
- 一个可选的JSON格式类序列化的数据类型不是由标准JSON序列(支持的datetime,uuid等)。例如,您可以使用 DjangoJSONEncoder该类或任何其他json.JSONEncoder子类。
JSONField使用
- 官网是按照
PostgreSQL
为示例,这里用的是MySQL
,其实除了引用不一样,别的用法都是相同的。 -
示例
from django_mysql.models import JSONField from django.db import models class Dog(models.Model): name = models.CharField(max_length=200) data = JSONField() def __str__(self): return self.name
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.objects.filter(data__owner__name='Bob') <QuerySet [<Dog: Rufus>]>
-
如果键是整数,它将被解释为数组中的索引查找
>>> Dog.objects.filter(data__owner__other_pets__0__name='Fishy') <QuerySet [<Dog: Rufus>]>