天天看點

Django models存儲json格式的資料

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格式的資料