How to store a bank account number generated into a model field

238 views
Skip to first unread message

Dennis Alabi

unread,
Jun 19, 2019, 2:02:55 PM6/19/19
to Django users
I tried but i don't seem to be getting it, please help

Views.py
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.http import Http404
from django.shortcuts import render, redirect
from .forms import DepositForm, WithdrawalForm
from users.models import Profile
import random
from . import models

def random_gen():
# return a 10 digit random number
return int(random.uniform(1000000000, 9999999999))


def index(request):
try:
curr_user = Profile.objects.get(user=request.user) # getting details of current user
except:
# if no details exist (new user), create new details
curr_user = Profile()
curr_user.account_number = random_gen() # random account number for every new user
curr_user.balance = 0
curr_user.user = request.user
curr_user.save()
return render(request, "users/profile.html", {"curr_user": curr_user})

models.py
from django.db import models
from django.contrib.auth.models import User
from PIL import Image



class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
account_number = models.IntegerField(blank=False,null=False)
balance = models.IntegerField(blank=False,null=False)

def __str__(self):
return f'{self.user.username} Profile'

def save(self, *args, **kwargs):
super(Profile, self).save(*args, **kwargs)

img = Image.open(self.image.path)

if img.height > 300 or img.width > 300:
output_size = (150, 150)
img.thumbnail(output_size)
img.save(self.image.path)













Ying Yu

unread,
Jun 19, 2019, 5:18:28 PM6/19/19
to Django users
You could try the CharField to store the account number. Also, it is better to store the balance as FloatField

Simon A

unread,
Jun 21, 2019, 4:16:44 AM6/21/19
to Django users
I think the except block won't trigger since if the code Profile.objects.get(user=request.user) does not get any results, it will return a null result, not throw exception.

instead of exception handling, just check if the return value is null or not

Reply all
Reply to author
Forward
0 new messages