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>]>
參考連結:
Django models存儲json格式的資料