目录
参考
https://blog.csdn.net/yup1212/article/details/83035955
https://blog.windrunner.me/python/web/django-rest-framework.html
https://blog.csdn.net/shirukai/article/details/81086242
结论
QuerySet数据:建议使用序列化类的形式(rest_framework),如果不想安装rest_framework的话,那么可以使用list和values的方法,但时间字段格式无法自定义输出
Model类数据:建议使用自定义to_dict方法
方法
分两种数据进行讨论:
QuerySet数据——比如说filter、exclude、all、values等
- 序列化类(rest_framework)- 推荐
- serializers方法
- list和values结合的方法 - 只适用于values
Model类数据——比如说get、first等
- model_to_dict方法
- __dict__方法
- 自定义to_dict方法 - 推荐
一、QuerySet数据
有三种方式来处理数据
一种是序列化类的方式,这个是基于rest_framework,所以需要安装rest_framework
- 优点:输出格式很规范,可以处理时间字段的格式,可以控制输出的字段
- 缺点:需要安装rest_framework,相对较为繁琐
另一种是使用serializers方法:
- 优点:容易实现,无需安装依赖
- 缺点:输出格式不规范,不能直接处理时间字段的格式,不能处理values方法
由于serializers方法返回的格式不是很规范,而且时间字段并没有做处理,使用序列化类的化,可以很好的处理时间字段,可以以我们想要的时间格式来输出,所以更推荐使用序列化类的方式
如果是values方法的话,也有一种很简单的方法,使用list直接转即可
- 优点:容易实现,输出格式很规范,可以控制输出的字段
- 缺点:不能直接处理时间字段的格式
1. 序列化类方式
Model里面定义的方法为:
class AlarmEvent(models.Model):
...
@staticmethod
def get_all():
"""
获取所有的记录(倒序)
:return:
"""
res = AlarmEvent.objects.all().order_by('-id&