Как я могу сохранить генерировать otp код в django - PullRequest
0 голосов
/ 14 января 2020

Я зарегистрирован как пользователь по номеру телефона. Когда я ввожу телефонный номер, тогда сгенерируйте otp номер и сохраните его в базе данных. У меня есть генерируемый номер, но я не могу его сохранить. Итак, как мне его сохранить?

Мой файл serializers.py

class AccountsSerializer(serializers.ModelSerializer):
    def validate_phone_number(self, phone_number):
        if phone_number:
            MOBILE_REGEX = re.compile('^(?:\+?88)?01[13-9]\d{8}$')
            if MOBILE_REGEX.match(phone_number):
                return (phone_number)
            else:
                raise serializers.ValidationError('No. not matching')
        else:
            raise serializers.ValidationError('Please enter a number')

    def generate_otp(self):
        otp = randint(000000, 999999)
        return otp

    class Meta:
        model = TempRegistration
        fields = ['phone_number']

views.py

class GetPhoneNumber(CreateAPIView):
    queryset = TempRegistration.objects.all()
    serializer_class = AccountsSerializer

models.py

class TempRegistration(models.Model):
    phone_number = models.CharField(max_length=45)
    otp_code = models.CharField(max_length=6)

    def __str__(self):
        return self.phone_number

1 Ответ

2 голосов
/ 14 января 2020

Переопределить perform_create(...) метод GetPhoneNumber view

class GetPhoneNumber(CreateAPIView):
    queryset = TempRegistration.objects.all()
    serializer_class = AccountsSerializer

    def perform_create(self, serializer):
        serializer.save(otp_code=randint(000000, 999999))
...