"Поле 'id' ожидало число, но получило 'ashutoshmishra333@gmail.com'.", - PullRequest
0 голосов
/ 21 февраля 2020

при публикации через почтальона с ошибкой

"Поле 'id' ожидало число, но получило '*********333@gmail.com'.",

мой набор просмотра

class PasswordViewSet(viewsets.ViewSet):

def create(self, request):
    try:
        email = request.data.get('email')
        password = request.data.get('password')
        otp = request.data.get('otp')
        #user_obj = MyUser.objects.filter(email=email)
        otp_obj_check = Otp.objects.filter(email=email)
        user_obj=MyUser.objects.get(email=email)
        if not user_obj:
            raise Exception("email does not exist")
        if otp_obj_check:
            otp_obj = Otp.objects.filter(email=email).order_by('-id')[0]
        else:
            raise Exception("invalid otp")
        if not otp:
            raise Exception("please enter otp")
        if int(otp_obj.otp) == int(otp):
            for user_obj in user_obj:
                user_obj.set_password(password)
                user_obj.save()
                # token = get_access_token(user_obj)
        else:
            raise Exception('wrong otp')

        if not password:
            raise Exception('please enter password')


        return Response({"password": 'updated', "success": True}, status=status.HTTP_200_OK)
    except Exception as error:
        traceback.print_exc()
        return Response({"message": str(error), "success": False}, status=status.HTTP_200_OK)

моя модель

class Otp(models.Model):

email=models.ForeignKey(MyUser,on_delete=models.CASCADE)
otp=models.CharField(max_length=10,null=True,blank=True)

def __str__(self):
    return self.otp

1 Ответ

1 голос
/ 21 февраля 2020

Поле электронная почта в модели Otp с указанием модели MyUser . Поле primarykey для Myuser равно id (это целое число).

,

otp_obj_check = Otp. objects.filter (email = email) не фильтруется по полю email , фильтруется по полю id Myuser.

Для фильтрации с электронной почтой из Myuser измените свои строки 8 и 13, как показано ниже:

otp_obj_check = Otp.objects.filter(email__email=email) 

и

otp_obj = Otp.objects.filter(email__email=email).order_by('-id')[0]

важное двойное подчеркивание между электронной почтой и электронной почтой

это фильтр на основе электронной почты из Myuser .

Надеюсь, у вас есть email поле в Myuser модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...