【发布时间】:2021-06-28 05:37:53
【问题描述】:
我正在尝试访问 django 组模型中的用户。
目前我只能通过其他方式访问它,即来自用户模型的组。
我希望能够从 Group 端点执行多项操作:
- 检索组内的用户并将其返回到视图内
- 创建组并直接在请求中添加用户
- 更新组以在其中添加或删除用户
我为权限做了同样的事情,我可以将它们添加到组内,但我不能为用户做这件事,因为组模型内没有用户字段。
为了获得许可,我做了一个序列化程序
我想和 Permissions 字段一样,但是对于用户,有什么办法吗? 我希望覆盖 Group 模型并添加一个字段,以便可以在序列化程序中使用它,但我没有找到如何这样做。
class GroupSerializer(serializers.ModelSerializer):
Id = serializers.IntegerField(source='id', required=False)
Name = serializers.CharField(source='name')
Permissions = PermissionSerializer(source='permissions', many=True, required=True)
class Meta:
model = Group
fields = ('Id','Name','Permissions',)
def create(self, validated_data):
print(validated_data)
permissions_data = validated_data.pop('permissions')
permissions = []
for permission in permissions_data:
permissions.append(get_object_or_404(Permission.objects.all(), pk=permission['id']))
group = Group.objects.create(**validated_data)
group.permissions.set(permissions)
return group
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
if validated_data.get('permissions'):
permissions_data = validated_data.pop('permissions')
permissions = []
for permission in permissions_data:
permissions.append(get_object_or_404(Permission.objects.all(), pk=permission['id']))
instance.permissions.set(permissions)
instance.save()
return instance
【问题讨论】:
标签: django rest django-models django-rest-framework