Django 序列化数据之单表数据序列化

类型一:对于表单数据进行序列化

ret['errors'] = obj.errors.as_data()
result = json.dumps(ret, cls=JsonCustomEncoder)  #JsonCustomEncoder是自定义的cls,用来转换ret中特殊的error字段类型
return HttpRespon(result)

类型二:对于queryset类型进行序列化  

第一种:v的类型是未知的
    from django.core import serializers
     
    v = models.tb.objects.all() # 或者 v = models.tb.objects.values('id','name')  v=list(v)
    data = serializers.serialize("json", v)
     
第二种:v的类型是已知的,在包含不能序列化的数据,比如time,datetime等类型时,需要自己定义cls
     
    import json
    from datetime import date
    from datetime import datetime
        
    class JsonCustomEncoder(json.JSONEncoder):
         
        def default(self, field):
          
            if isinstance(field, datetime):
                return field.strftime('%Y-%m-%d %H:%M:%S')
            elif isinstance(field, date):
                return field.strftime('%Y-%m-%d')
            else:
                return json.JSONEncoder.default(self, field)
 
    v = models.tb.objects.values('id','name','ctime')
    v = list(v)
    v = json.dumps(v,cls=JsonCustomEncoder)

 

 

posted @ 2020-03-25 15:48  Pythia丶陌乐  阅读(194)  评论(0编辑  收藏  举报