Django 里的常见数据类型

写在前面

本文源1(QueryDict):https://www.cnblogs.com/rangger/p/9801188.html
本文源2(model):https://blog.csdn.net/a__int__/article/details/105163093
本文源3(OrderedDict):https://www.jianshu.com/p/b41aa22efb67
本文源4(QuerySet):https://www.cnblogs.com/zihao1037/p/11022347.html

1、django里的各种数据都是什么类型

数据类型 django里的常见数据
QuerySet models_name.objects.all()、models_name.objects.filter() 、serializer
model models_name.objects.get()
QueryDict request.GET、request.POET、request.query_params、
OrderedDict serializer.data
dict(字典) request.data

2、简单的解释这几种类型

  • QuerySet:Django的Model中一个懒加载的对象,QuerySet最终可以通过list(QuerySet.values())序列化成列表,例:
m = User.objects.filter(pk=1)
print(type(list(m.values())))

#输出:<class 'list'>
  • model:继承自ModelBase->type->object
  • QueryDict:它是字典的子类,通过QueryDict.get(“键值”)取值,QueryDict是不可变的。如果要修改它,需要使用QueryDict.copy()方法。
QueryDict取值

>>> q = QueryDict('a=1', mutable=True)
>>> q.update({'a': '2'})
>>> q.getlist('a')
['1', '2']
>>> q['a'] # returns the last
'2'

>>> q = QueryDict('a=1&a=2&a=3')
>>> q.items()
[('a', '3')]
  • OrderedDict:相当于用列表(有序)来维护字典(无序)排序,实际OrderedDict内部维护了一个双向链表,他会根据元素加入的顺序来排列键的位置
from collections import OrderedDict
d = OrderedDict()
d['a'] = 1
d['c'] = 3
d['b'] = 2

>>> d
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

for k in d:
    print (k, d[k])

a 1
c 3
b 2

3、取值或序列化

aaa表示对应的数据类型

数据类型 取值或序列化
QuerySet 列表: list(aaa.values())
models 序列化:(参考下)
QueryDict 和字典一样取数据
OrderedDict 取数据和字典差不多,django里面可以直接Response(aaa)得到的就是字典

models序列化:

原文:https://blog.csdn.net/yangcs2009/article/details/80054325?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

首先,你需要在django model的定义中增加一个方法toJSON,利用了django model 能访问 _meta.fields 得到相关属性而得到,例子如下

# models里面
class User(models.Model):
    name=models.CharField(max_length=150,blank=False)
    
    def __unicode__(self):
        return '%s' % (self.catname)
    
    def toJSON(self):
        import json
        return json.dumps(dict([(attr, getattr(self, attr)) for attr in [f.name for f in self._meta.fields]]))
        
# 使用时
user=User.objects.get(pk=1)    
print user.toJSON()
发布了136 篇原创文章 · 获赞 30 · 访问量 7044

猜你喜欢

转载自blog.csdn.net/a__int__/article/details/105187961