drf 序列化 简单使用
models
class Depart(models.Model):
name = models.CharField(verbose_name='部门名', max_length=32)
class UserInfo(models.Model):
username = models.CharField(verbose_name='用户名', max_length=32)
password = models.CharField(verbose_name='密码', max_length=32)
token = models.CharField(verbose_name='token', max_length=64, null=True, blank=True)
role = models.SmallIntegerField(verbose_name='角色', choices=((1, '经理'), (2, '总监'), (3, '普通'),), default=3)
depart = models.ForeignKey(verbose_name='部门', to='Depart', on_delete=models.CASCADE, default=1)
c_time = models.DateTimeField(verbose_name='创建时间', auto_now=True)
序列化类(Serializer)
class UserSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
token = serializers.CharField()
role = serializers.IntegerField()
序列化类(ModelSerializer)
class UserSerializer(serializers.ModelSerializer):
# 自定义显示字段
# choice 显示
role_text = serializers.CharField(source='get_role_display')
# 外键显示
depart = serializers.CharField(source='depart.name')
# 时间格式化
c_time = serializers.DateTimeField(format='%Y-%m-%d')
# 自定义字段
xxx = serializers.SerializerMethodField()
class Meta:
model = models.UserInfo
fields = '__all__'
# 定义xxx字段显示什么
def get_xxx(self, obj):
# obj 代表当前类对象
return obj.username
view
class UserView(OrPermissionAPIView):
def get(self, request, *args, **kwargs):
# 单个对象
user = models.UserInfo.objects.all().first()
user = UserSerializer(instance=user)
# 多个对象
queryset = models.UserInfo.objects.all()
queryset = UserSerializer(instance=queryset, many=True)
return Response(queryset.data)
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16753218.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步