Home > Mobile >  My usertype user and doctor is not setting true while registering user
My usertype user and doctor is not setting true while registering user

Time:08-18

I am a new bie in django, creating doctor appointment project. I have extend the abstractuser and set user type is_patient and is_doctor, user register and doctor register form is different. I want if the user register through user form is_user should set True if user register through doctor form is_doctor should set true. But its not setting true everytime registering. Below is my code.

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import User
# Create your models here.

class User(AbstractUser):
    is_user = models.BooleanField(default=False)
    is_doctor = models.BooleanField( default=False)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

class User_reg(models.Model):
    user = models.OneToOneField('User',on_delete=models.CASCADE, primary_key=True)
    User.is_user = True
    fname = models.CharField(max_length=50,blank=False)
    lname = models.CharField(max_length=50,blank=False)
    email = models.EmailField(max_length=100,blank=False)
    address = models.TextField(max_length=500,blank=False)
    gender = models.CharField(max_length=7, blank=False)
    phone = models.CharField(max_length=12,unique=True,blank=False)
    Username = models.CharField(max_length=100,blank=False,unique=True)
    Userpassword = models.CharField(max_length=100,blank=False)
    

    def __str__(self):
        return self.fname

class dr_reg(models.Model):
    user = models.OneToOneField('User',on_delete=models.CASCADE, primary_key=True)
    user.is_doctor = True
    fname = models.CharField(max_length=50,blank=False)
    lname = models.CharField(max_length=50,blank=False)
    image = models.ImageField()
    specialisation = models.CharField(max_length=100,blank=False)
    qualificaton =  models.CharField(max_length=100,blank=False)
    phone = models.CharField(max_length=12,blank=False,unique=True)
    gender = models.CharField(max_length=7,blank=False)
    address = models.TextField(max_length=500,blank=False)
    state =  models.CharField(max_length=50,blank=False)
    city = models.CharField(max_length=50,blank=False)
    zip = models.CharField(max_length=50,blank=False)
    email = models.EmailField(max_length=50,blank=False)
    dUsername = models.CharField(max_length=100,blank=False,unique=True)
    dPassword = models.CharField(max_length=100,blank=False)

    def __str__(self):
        return self.fname

views.py

def register(request):
    if request.method == "POST":
        fname = request.POST.get('fname')
        lname = request.POST.get('lname')
        email = request.POST.get('email')
        address = request.POST.get('add')
        gender = request.POST.get('sex')
        phone = request.POST.get('phone')
        username = request.POST.get('uname')
        userpassword = request.POST.get('upass')

        myuser = User.objects.create_user(username, email, userpassword)
        myuser.first_name = fname
        myuser.last_name = lname
        myuser.save()
        
        User_reg.objects.create(fname=fname,lname=lname,email=email,address=address,gender=gender,phone=phone,Username=username,Userpassword=userpassword,user=myuser)
messages.success(request, 'Register successful')
        return render(request,'user/login.html')
    else:
        return render(request, 'user/register.html')  

def dr_register(request):
    if request.method == "POST":
        fname = request.POST.get('dfname')
        lname = request.POST.get('dlname')
        image = request.POST.get('img')
        qualification = request.POST.get('qualification')
        specialist = request.POST.get('specialisation')
        phone = request.POST.get('dphone')
        gender = request.POST.get('dsex')
        address = request.POST.get('dadd')
        state = request.POST.get('state')
        city = request.POST.get('city')
        zip = request.POST.get('zip')
        email = request.POST.get('demail')
        dr_username = request.POST.get('duname')
        dr_password = request.POST.get('dpass')

        mydoctor = User.objects.create_user(dr_username, email, dr_password)
        mydoctor.first_name = fname
        mydoctor.last_name = lname
        mydoctor.save()

        dr_reg.objects.create(fname=fname,lname=lname,image=image, qualificaton=qualification, specialisation = specialist, phone= phone, gender=gender, address=address, state=state, city=city, zip=zip, email=email, dUsername=dr_username, dPassword= dr_password,user=mydoctor)
        # dr_register.save()  
    
        messages.success(request, 'Registeration successful')
        return render(request, 'doctor/login.html')  

    else:
        return render(request, 'doctor/register.html')

I have set default usertype= False. please help me out and also mention if any suggestion or modification in code so that I may not face problems in further modules.

CodePudding user response:

Setting user.is_doctor=True should be done in your view.

    mydoctor = User.objects.create_user(dr_username, email, dr_password)
    mydoctor.first_name = fname
    mydoctor.last_name = lname
    mydoctor.is_doctor = True
    mydoctor.save()

And similarly

    myuser = User.objects.create_user(username, email, userpassword)
    myuser.first_name = fname
    myuser.last_name = lname
    myuser.is_user = True
    myuser.save()
  • Related