django - 在 Django REST framework 中注册用户并为用户设置组

标签 django django-rest-framework django-permissions

我的用户类是:

class UserProfile(User):
    sex = models.SmallIntegerField(verbose_name=_(u'sex'), choices=SEX_TYPES, default=1)
    .
    .
UserProfileSerializer:
class ProfileSerializer(serializers.ModelSerializer):
     groups = GroupSerializer()

     class Meta:
        model = UserProfile
        fields = ('id', 'first_name', 'last_name', 'username','email','groups')
允许用户注册的 Api View 是:
@api_view(['POST'])
def create_user(request):
      serialized = ProfileSerializer(data=request.DATA)
      if serialized.is_valid():
          created_user = UserProfile.objects.create_user(
              serialized.init_data['email'],
              serialized.init_data['username'],
              serialized.init_data['password'],
          )
          # here I want assign a group for user or anything else
          created_user.groups = "users"
          created_user.save()

          return Response(serialized.data, status=status.HTTP_201_CREATED)
      else:
          return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
通过这个测试:
curl -X POST -H "Content-Type: application/json" -d '
{
"username":  "aaa",
"email": "aa@aaa.com" ,
"password":  "111111"
}' http://127.0.0.1:8000/api/users/register/
组总是有错误。 {"groups": ["This field is required."]}如何为用户或其他任何东西分配一个组?

最佳答案

确保您已创建用户组,然后执行以下操作:

from django.contrib.auth.models import Group

users_group = Group.objects.get(name='users')

created_user.groups = [users_group]
# or instead:
# created_user.groups.add(users_group)

引用:

https://docs.djangoproject.com/en/dev/topics/auth/default/#permissions-and-authorization

关于django - 在 Django REST framework 中注册用户并为用户设置组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740254/

相关文章:

django - 'django.contrib.messages.context_processors.messages' 必须在 DjangoTemplates 中启用

python - 如何获取请求参数并返回django Rest-framework

django - 如何修改 django 以创建 "view"权限?

Django Rest 框架 : how to make field required/read-only only for update actions such as PUT and PATCH?

django - 在迁移中添加django管理员权限:权限匹配查询不存在

python - 删除用户的权限(django)

django - Django Rest Framework (DRF) 中的 add_error(fieldname, ...)

python - 模型方法中的django反向查找

python - Django一对多

ModelViewSet 中的 django-rest 自定义 url