Получение данных из модели базы данных django

У меня есть модель django, PhoneNumberVerification.

В нем есть две колонки: номер телефона и код. Я хочу иметь возможность получить код, если мне дан номер телефона. По сути, нужно найти в таблице, в какой строке указан номер телефона, и получить код для этой строки.

Я могу написать SQL для этого, но я не знаю, как выполнить это для получения данных в моделях django, и мне интересно, есть ли лучший не sql способ сделать это.

Моя модель:

class PhoneNumberVerification(models.Model):
    phone_number = models.TextField(max_length = 20, blank = False, unique = True)
    code = models.CharField(max_length = 8, blank = False)

Что я хочу:

from .models import PhoneNumberVerification

def get_code(phone_number):
    # do some stuff
    return code
def get_code(phone_number):
  verification = PhoneNumberVerification.objects.get(phone_number=phone_number)
  return verification.code

В документации по Django есть отличный учебник для начинающих. Написание вашего первого приложения Django, часть 2

obj = PhoneNumberVerification.objects.get(phone_number=phone_number)

И я предлагаю изменить форму поля phone_number TextField на PositiveBigIntegerField

для получения объекта, вы можете просто использовать:

def get_code(phone_number):
   try:
        phone_number_verification = PhoneNumberVerification.objects.get(phone_numer=phone_number)
        code = phone_number_verification.code
        return code
    except PhoneNumberVerification.DoesNotExist:
        pass # django will raise exception in case if number does not exist

если вы знаете, что существует только один объект, соответствующий вашему запросу, вы можете использовать get(), который вернет объект напрямую.

В противном случае можно использовать filter(), подробнее об этом здесь

Вернуться на верх