Валидация "8" в django-phonenumber-field

Рейтинг: 0Ответов: 1Опубликовано: 09.05.2023

В своем проекте использую django-phonenumber-field для валидации телефонных номеров.

telephone = PhoneNumberField(region="RU", widget=RegionalPhoneNumberWidget(attrs={
        'placeholder': "+79248347257"}))

Вариант с написание номера через "8" вместо "+7" выдает ошибку. Подскажите как сделать, что бы принимало оба варианта.

Ответы

▲ 0

По одной строчке кода сложно дать точный ответ на твою проблему. Как я понял, у тебя проблема с валидацией, ибо форма отправляется и сохраняется в db, но ждет определённый формат. Попробуй настроить валидатор под свою модель. Чтобы просто-напросто формат не принимался.

from django.core.validators import RegexValidator 

class Test(models.Model):
    phoneNumberRegex = RegexValidator(regex = r"^\+?1?\d{8,15}$")
    phoneNumber = models.CharField(validators = [phoneNumberRegex], max_length = 16, unique = True)

Так же могу предложить вариант, которым лично я пользуюсь. Это принимать цифры после номерного знака страны, если данные тебе нужны просто-напросто для хранения информации и дальнейшими манипуляциями с номером пользователя.