序列化和反序列化
反序列化:json数据转换为模型对象
序列化:模型对象转换为json数据
create:
s = DiabetesModelSerializer(data=data)
s.save()
get:
diabetes = Diabetes.objects.filter(user=1, is_active=True)
# 如果查询集有多条,设置many=True
serializer = DiabetesModelSerializer(diabetes, many=True)
return response_success("查询成功", serializer.data)
update:
diabetes = Diabetes.objects.get(user=1, is_active=True)
#instance要更新的对象,partial默认false(需包含所有字段),设置为true表示局部修改
s = DiabetesModelSerializer(instance=diabetes, data=request.data, partial=False)
s.save()
delete:
#采用逻辑删除,非物理删除,若queryset为单一,则删除一条,否则批量删除
Diabetes.objects.filter(user=1, is_active=True).update(is_active=False)
序列化类
from rest_framework import serializers
from rest_framework.fields import DateTimeField
from diabetes.models import Diabetes
class DiabetesModelSerializer(serializers.ModelSerializer):
create_time = DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
class Meta:
model = Diabetes
fields = "__all__"
视图
class DiabetesViewSet(ModelViewSet):
queryset = Diabetes.objects.all()
serializer_class = DiabetesModelSerializer
@action(methods=['GET'], detail=False)
def fetch_diabetes_data(self, request):
try:
user = fetch_user(request).id
diabetes = Diabetes.objects.filter(user=user, is_active=True).order_by('-update_time')
serializer = DiabetesModelSerializer(diabetes, many=True)
return HttpResponse.response_success("查询成功", serializer.data)
except Exception as e:
logger.error(traceback.format_exc(limit=3))
return HttpResponse.response_failed("查询失败")