drf 序列化 嵌套
models
class Depart(models.Model):
name = models.CharField(verbose_name='部门名', max_length=32)
class Tag(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)
tags = models.ManyToManyField(to='Tag', verbose_name='标签')
序列化
# tag的序列化
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = models.Tag
fields = '__all__'
# Depart的序列化
class DepartSerializer(serializers.ModelSerializer):
class Meta:
model = models.Depart
fields = '__all__'
class UserSerializer(serializers.ModelSerializer):
depart = DepartSerializer()
# 不是一对一
tags = TagSerializer(many=True)
class Meta:
model = models.UserInfo
fields = '__all__'
view
class UserView(OrPermissionAPIView):
def get(self, request, *args, **kwargs):
# 多个对象
queryset = models.UserInfo.objects.all()
queryset = UserSerializer(instance=queryset, many=True)
return Response(queryset.data)
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16755075.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步