python model对象转为dict数据

在接口通讯里经常遇到这种需求,需要将对象的字段名和值均传至接口,
user = User.objects.get(id=1)

笨方法1,没错,我这样写过:
di = {}
di['username'] = user.username
di['email'] = user.email
...... # 诸多赋值

笨方法2,没错,我也这样写过:
di = {}
all_fields = User._meta.get_all_field_names()
special_fields = ['is_active', 'is_stuff']
for i in special_fields:
    try:
        all_fields.remove(i)
    except:
        pass
for field in all_fields:
    di[field] = getattr(user, field)

!!!正确的方法,翻源码时遇到的,最喜欢这种命名,看名字就知道了怎样用和返回值,看到它时又感觉django暖暖的,很贴心~:
from django.forms.models import model_to_dict
di = model_to_dict(user, exclude=['is_active', 'is_stuff'])

源码:def model_to_dict(instance, fields=None, exclude=None):
参数instance是对象实例,fields是指定需要哪些字段,exclude是指定排除哪些字段,exclude比fields优先级高。

上一篇:POJ 3279(Fliptile)题解


下一篇:nginx负载均衡指令least_conn的真正含义