一、前言
在Django應用程序中,進行數據庫操作主要使用Django的ORM框架,這個框架可以方便的將數據庫中的表映射成為Python類,然後通過這個類就可以進行數據庫的增刪改查等操作了。ORM框架提供了manager、queryset等對象來幫助我們更加方便的操作數據庫。然而,在一些情況下,我們需要將Django的Model對象轉換成Python字典,以便於對返回數據進行處理、或者我們希望將Model對象序列化成JSON字符串。這篇文章將介紹從Django Model轉換為Python字典的實用函數。
二、實現
通過以下代碼,我們可以實現將Django的Model對象轉換為Python字典。
def model_to_dict(instance, fields=None, exclude=None):
"""
:param instance: Django model對象
:param fields: 顯示字段
:param exclude: 排除字段
:return: 返回python字典格式數據
"""
data = {}
if not exclude:
exclude = []
if not fields:
fields = []
model_fields = instance._meta.get_fields()
for field in model_fields:
name = field.name
if name not in exclude and (not fields or name in fields):
try:
value = getattr(instance, field.name)
if callable(value):
data[name] = value()
else:
data[name] = value
except Exception as e:
print(e)
return data
三、參數說明
該函數需要傳給它實例化的Django Model對象(instance),然後可以指定該Model對象轉換為字典的字段列表(fields)和需要禁止轉換的字段列表(exclude)。如果fields沒有值,那麼所有的字段都會被轉換。
四、使用方法
在Django的models.py文件中定義Model
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField(max_length=100)
website = models.URLField(blank=True)
def __str__(self):
return self.name
在views.py文件中調用model_to_dict函數,如下:
from django.shortcuts import render
from .models import Author
from .utils import model_to_dict
def author_detail(request, pk):
author = Author.objects.get(pk=pk)
author_dict = model_to_dict(author)
return render(request, 'author_detail.html', {'author': author_dict})
在templates中使用轉換後的字典數據,使用{{ author.name}}、{{ author.email }}、{{ author.website }}來獲取值。
五、總結
以上即是將Django Model轉換為字典的實用函數,使得我們可以很方便地對返回數據進行處理,或者對Model進行序列化成JSON字符串。
原創文章,作者:YHUK,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139442.html
微信掃一掃
支付寶掃一掃