zoukankan      html  css  js  c++  java
  • 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优先级高。

  • 相关阅读:
    Kth Smallest Element in a BST
    Bitwise AND of Numbers Range
    Happy Number
    Summary Ranges
    linux设置MySQL开机自动启动
    基本PSO算法实现(Java)
    Invert Binary Tree
    Rectangle Area
    Contains Duplicate II
    Contains Duplicate
  • 原文地址:https://www.cnblogs.com/zknublx/p/6180430.html
Copyright © 2011-2022 走看看