首页 > 解决方案 > DRF 序列化程序中的源字段,具有相同模型的多个外键

问题描述

我有一个 Django 模型如下:

class Team(models.Model):
    name = models.CharField(max_length=100, unique=True)
    managers = models.ManyToManyField(User, through=MgrToTeam, related_name='mng')
    users = models.ManyToManyField(User, through=UsrToTeam,related_name='usr')

我现在有一个序列化程序,我需要在其中显示与团队关联的所有用户和经理:

class TeamDetailSerializer(serializers.ModelSerializer):

managers = serializers.SlugRelatedField(queryset=User.objects.all(), slug_field='name')
users = serializers.SlugRelatedField(queryset=User.objects.all(), slug_field='name')

class Meta:
    model = Team
    fields = ['id', 'name', 'managers', 'users']

但是,这为用户和经理提供了相同的输出。我该如何解决这个问题?

标签: pythondjangodjango-rest-framework

解决方案


我很好奇你为什么要使用SlugRelatedField. 假设您确实有UserSerializer某种形式,那么这样做对您有用吗?

class TeamDetailSerializer(serializers.ModelSerializer):

    managers = UserSerializer(many=True)
    users = UserSerializer(many=True)

    class Meta:
        model = Team
        fields = ['id', 'name', 'managers', 'users']

推荐阅读