I have a django model, PhoneNumberVerification.
It has two columns: phone number, and code. I want to be able to get the code if I am given a phone number. Essentially, search the table for which row has the phone number as my phone number, and fetch the code for that given row.
I could write SQL for this, but I do not know how to execute that to fetch data in django models, and I was wondering if there was a better non-sql way to do this.
My model:
class PhoneNumberVerification(models.Model):
phone_number = models.TextField(max_length = 20, blank = False, unique = True)
code = models.CharField(max_length = 8, blank = False)
What I want:
from .models import PhoneNumberVerification
def get_code(phone_number):
# do some stuff
return code
CodePudding user response:
def get_code(phone_number):
verification = PhoneNumberVerification.objects.get(phone_number=phone_number)
return verification.code
Django's documentation has great tutorial for beginners. Writing your first Django app, part 2
CodePudding user response:
to get the object, you can simply use:
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
if you know there is only one object that matches your query, you can use the get(), which will return the object directly.
Otherwise, you can use filter(), more on that here
CodePudding user response:
obj = PhoneNumberVerification.objects.get(phone_number=phone_number)
And I suggest changing phone_number field form TextField to PositiveBigIntegerField
