0

I am using code from https://stackoverflow.com/a/19337404/4507367 answer

@api_view(['POST'])
def register(request):
    VALID_USER_FIELDS = [f.name for f in get_user_model()._meta.fields]
    serialized = UserSerializer(data=request.data)
    if serialized.is_valid():
        user_data = {field: data for (field, data) in request.data.items() if field in VALID_USER_FIELDS}

        user = get_user_model().objects.create_user(
            **user_data
        )
        return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
    else:
        return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)

to register users, but I want the registration to fail if registration request has email that is already used. This probably can be done with filtering all users by user_data['email'] and denying the request if email already exists but it feels like a bad practice. There has to be a better way!

Community
  • 1
  • 1
Zygro
  • 6,849
  • 11
  • 28
  • 43

1 Answers1

1

You should add a UniqueValidator to your field to ensure it's unique.

Linovia
  • 19,812
  • 4
  • 47
  • 48