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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章