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)

image

posted @ 2022-10-05 09:28  Sherwin_szw  阅读(44)  评论(0编辑  收藏  举报