[英]How to allow users to select groups when register in django rest framework?
我正在嘗試在我的 rest 框架 API 中創建自定義注冊,其中用戶可以使用以下數據發出POST
請求
['email', 'username', 'password', 'password2', 'groups']
{"groups":["Incorrect type. Expected pk value, received str."]}
# serializers.py
class RegisterSerializer(serializers.ModelSerializer):
password2 = serializers.CharField(
style={'input_type': 'password'}, write_only=True)
class Meta:
model = User
fields = ['email', 'username', 'password', 'password2', 'groups']
extra_kwargs = {
'password': {'write_only': True},
}
def save(self):
user = User(
email=self.validated_data['email'],
username=self.validated_data['username']
)
password = self.validated_data['password']
password2 = self.validated_data['password2']
if password != password2:
raise serializers.ValidationError(
{'password': 'Passwords must match.'})
user.set_password(password)
user.save()
return user
# views.py
@api_view(['POST', ])
def Registration_view(request):
if request.method == 'POST':
serializer = RegisterSerializer(data=request.data)
data = {}
if serializer.is_valid():
account = serializer.save()
data['response'] = 'successfully registered new user.'
data['email'] = account.email
data['username'] = account.username
data['groups'] = account.groups
else:
data = serializer.errors
# new_user = User.objects.all().get(username=data['username'])
return Response(data)
# return JsonResponse(serlize("json",modles.User.objects.get(username=data['username'])))
發生錯誤是因為您將組定義為外鍵(我猜是因為您沒有共享 models.py)但您嘗試傳遞字符串值。 所以,錯誤說它需要一個組 object 的 id。 如果您將管理組的 ID 與請求一起發送,則不會發生錯誤。
此外,您不需要這部分:
data['response'] = 'successfully registered new user.'
data['email'] = account.email
data['username'] = account.username
data['groups'] = account.groups
你可以簡單地使用:
return Response(serializer.data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.