**I am new to django
i am working on a project where I have 4 usertype
1- super admin 2- sub admin 3 - clinic 4 - patient
Now I want to make the login for all the 4 usertype**
right now I have create a model like this
import django
from django.db import models
from django.contrib.auth.models import AbstractUser
class Registered_user(AbstractUser):
is_clinic = models.BooleanField(default=False)
is_patient = models.BooleanField(default=False)
token = models.CharField(max_length=120, default=None, null= True)
forgot_token = models.CharField(default=None, max_length=120, null=True),
email = models.EmailField(unique = True, max_length=254, verbose_name='email address')
updated = models.DateTimeField(auto_now=True)
published = models.DateTimeField(default=django.utils.timezone.now)
#clinic
clnc_name = models.CharField(max_length=255)
clnc_phone = models.BigIntegerField(null= True)
clnc_contact_name = models.CharField(max_length=255)
clnc_Job_Title = models.CharField(max_length=255)
clnc_address_line1 = models.CharField(max_length=255)
clnc_address_line2 = models.CharField(max_length=255)
clnc_county = models.CharField(max_length=255)
clnc_postcode = models.CharField(max_length=255)
clnc_town_city = models.CharField(max_length=255)
clnc_created_at = models.DateTimeField(auto_now_add=True)
clnc_status = models.BooleanField(default=False)
#Patient
punique_number = models.CharField(max_length=20)
pname= models.CharField(max_length=255)
patient_adddress = models.TextField(max_length=500)
pphone_number = models.IntegerField(null=True)
phome_number = models.IntegerField(null=True)
pwork_number = models.IntegerField(null=True)
pdob = models.CharField(max_length=255,null=True)
relative_name = models.CharField(max_length=255,null=True)
relative_phone = models.CharField(max_length=255,null=True)
relation = models.CharField(max_length=255,null=True)
pgender = models.CharField(max_length=20)
pcreated_at = models.DateTimeField(auto_now_add=True)
ptnt_status = models.BooleanField(default=False)
**I want them to be seperated I know this is not the right way to do this
I also tried to use the foreign key but i got null value error
Please let me know how I can create all the three models separate but will get the field of abstract user model **
I try to use the foreign key but i found multiple errors in that
from django.contrib.auth.models import AbstractUser
from django.db import models
class Registered_user(AbstractUser):
token = models.CharField(max_length=120, default=None, null=True)
forgot_token = models.CharField(default=None, max_length=120, null=True)
updated = models.DateTimeField(auto_now=True)
published = models.DateTimeField(auto_now_add=True)
class Clinic(models.Model):
user = models.OneToOneField(Registered_user, on_delete=models.CASCADE, primary_key=True)
clnc_name = models.CharField(max_length=255)
clnc_phone = models.BigIntegerField(null=True)
clnc_contact_name = models.CharField(max_length=255)
clnc_Job_Title = models.CharField(max_length=255)
clnc_address_line1 = models.CharField(max_length=255)
clnc_address_line2 = models.CharField(max_length=255)
clnc_county = models.CharField(max_length=255)
clnc_postcode = models.CharField(max_length=255)
clnc_town_city = models.CharField(max_length=255)
clnc_created_at = models.DateTimeField(auto_now_add=True)
clnc_status = models.BooleanField(default=False)
class Patient(models.Model):
user = models.OneToOneField(Registered_user, on_delete=models.CASCADE, primary_key=True)
punique_number = models.CharField(max_length=20)
pname= models.CharField(max_length=255)
patient_adddress = models.TextField(max_length=500)
pphone_number = models.IntegerField(null=True)
phome_number = models.IntegerField(null=True)
pwork_number = models.IntegerField(null=True)
pdob = models.CharField(max_length=255,null=True)
relative_name = models.CharField(max_length=255,null=True)
relative_phone = models.CharField(max_length=255,null=True)
relation = models.CharField(max_length=255,null=True)
pgender = models.CharField(max_length=20)
pcreated_at = models.DateTimeField(auto_now_add=True)
ptnt_status = models.BooleanField(default=False)