【发布时间】:2017-07-07 14:06:58
【问题描述】:
我正在制作我的第一个 API,它几乎就是我想要的。我试图让用户单独和通过他们的组访问,但我想设置 API 以清楚地显示用户拥有的所有访问权限,而不是将其嵌入到组中。
基本上,我想获取 group_affiliation 结果并将它们合并到其余结果中,因为它们具有相同的结构,并且以该格式更易于使用。
目前,我的输出如下所示:
[
{
"username": "admin",
"access": [
{
"name": "foo"
},
{
"name": "bar"
}
],
"group_affiliation": [
{
"access": [
{
"name": "eggs"
},
{
"name": "foo"
}
],
},
]
},
]
但我希望它看起来更像这样,其中 group_affiliation 结果合并到其他结果中:
[
{
"username": "admin",
"access": [
{
"name": "foo"
},
{
"name": "bar"
},
{
"name": "eggs"
}
],
}
]
这是我的models.py:
class Access(models.Model):
name = models.CharField(max_length=100)
site_user_access = models.ManyToManyField(User, blank=True)
site_group_access = models.ManyToManyField(Group, blank=True)
这是我的 serializers.py:
class AccessSerializer(serializers.ModelSerializer):
class Meta:
model = TopAccess
fields = ('name', )
class GroupSerializer(serializers.ModelSerializer):
access = AccessSerializer(
source='access_set',
many=True
)
class Meta:
model = Group
fields = (
'access',
)
class UserAccessSerializer(serializers.ModelSerializer):
access = AccessSerializer(
source='access_set',
many=True
)
group_affiliation = GroupSerializer(
source='groups',
many=True,
)
class Meta:
model = User
fields = (
'username',
'access',
'group_affiliation',
)
任何帮助将不胜感激。
【问题讨论】:
-
您到底遇到了什么问题?您需要更具体,并且只包含解释您的问题所需的最少代码量。 minimal reproducible example
-
@HåkenLid 我正在尝试将“group_affiliation”下显示的结果合并到其余结果中。我编辑了代码,使其更简洁
-
使用序列化方法字段来进行自定义输出
-
覆盖序列化器的 to_representation(),从这个函数返回你的自定义对象。
标签: django django-rest-framework