我的用户类别是:
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视图是:
@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