Home > front end >  how to check username exit or not two different table in djnago rest framework
how to check username exit or not two different table in djnago rest framework

Time:01-06

while register new user in Tempdriver table need to varify username already exist or not in tempdriver table and appuser table, if check tempdriver table username its working but if i check appuser table getting error, pls someone help me out.

models.py- add models Tempdriver and Appuser

class Tempdriver(BaseModel):
    name = models.CharField(max_length=255)
    username = models.CharField(max_length=20,unique=True,null=True, blank=True)
    mobile = models.CharField(max_length=20,unique=True,null=True, blank=True)
    password = models.CharField(max_length=100)

class AppUser(BaseModel):
    username = models.CharField(max_length=50)

seriliazers.py

class TempDriverUserSerializer(serializers.ModelSerializer):
    class Meta:
        model=Tempdriver
        fields=('username','mobile')
    def validate(self,username):       
        user=Tempdriver.objects.filter(username=username)
        user_exists = AppUser.objects.filter(username=username)
        if  user.exists() and user_exists.exists():
            raise serializers.ValidationError("UserName already exists")
        
    def validate_mobile(self, mobile):
        mobile=Tempdriver.objects.filter(mobile=mobile)
        if mobile.exists():
            raise serializers.ValidationError("Mobile Number already exists")

views.py

class Tempuserapi(APIView):
 
    parser_classes=(MultiPartParser,FormParser)
    def post(self, request, format=None):
        serializer = TempDriverUserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=HTTP_200_OK)
        else:
            return Response(serializer.errors, status= HTTP_200_OK)

trace report

ERROR Internal Server Error: /api/tempusercheck/
Traceback (most recent call last):
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner   
    response = get_response(request)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\rest_framework\views.py", line 469, in handle_exception 
    self.raise_uncaught_exception(exc)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
    raise exc
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\rest_framework\views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "E:\10dec_everestfleet\everest_jarvis\api\views.py", line 632, in post
    if serializer.is_valid():
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\rest_framework\serializers.py", line 220, in is_valid   
    self._validated_data = self.run_validation(self.initial_data)
  File "E:\10dec_everestfleet\everest_jarvis\env\lib\site-packages\rest_framework\serializers.py", line 423, in run_validation
    assert value is not None, '.validate() should return the validated data'
AssertionError: .validate() should return the validated data
ERROR "POST /api/tempusercheck/ HTTP/1.1" 500 20285

CodePudding user response:

You should return the validated data as the error said.

class TempDriverUserSerializer(serializers.ModelSerializer):
    class Meta:
        model=Tempdriver
        fields=('username','mobile')

    def validate_username(self,username):       
        user=Tempdriver.objects.filter(username=username)
        user_exists = AppUser.objects.filter(username=username)
        if  user.exists() and user_exists.exists():
            raise serializers.ValidationError("UserName already exists")
        return username

    def validate_mobile(self, mobile):
        mobile=Tempdriver.objects.filter(mobile=mobile)
        if mobile.exists():
            raise serializers.ValidationError("Mobile Number already exists")
        return mobile

CodePudding user response:

you are not returning anything in validate. change your validate to

def validate(self,attrs):
    username = attrs.get('username')
    user=Tempdriver.objects.filter(username=username)
    user_exists = AppUser.objects.filter(username=username)
    if  user.exists() and user_exists.exists():
        raise serializers.ValidationError("UserName already exists")
    return attrs

also return mobile in your validate_mobile too

  •  Tags:  
  • Related