从组模型Django访问用户



我正在尝试访问django的组模型中的用户。

目前,我只能通过另一种方式访问它,即用户模型中的组。

我希望能够从组端点执行多个操作:

  • 检索组中的用户并将其返回到视图中
  • 创建一个组并直接在请求中添加用户
  • 更新组以添加用户或从中删除用户

我对权限做了同样的事情,我可以将它们添加到组中,但我不能为用户做这件事,因为组模型中没有用户的字段。

为了获得许可,我制作了一个序列化程序

我想做与"权限"字段相同的操作,但对于用户来说,有什么方法吗?我想重写Group模型并添加一个字段,这样a就可以在序列化程序中使用它,但我没有找到如何做到这一点

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

您可以通过反向外键查找来获得用户组:

request.user.groups.all()
# or if you want to see other User's groups
User.objects.get(<your filter here>).groups.all()

注意末尾的.all():这是因为user.groups返回一个QuerySet Manager。

最新更新