Получение данных из модели базы данных 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(), подробнее об этом здесь