Guest User

Untitled

a guest
Jul 30th, 2021
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.89 KB | None | 0 0
  1. #models.py
  2. from django.contrib.auth.base_user import AbstractBaseUser
  3. from django.contrib.auth.models import AbstractUser, PermissionsMixin
  4. from django.db import models
  5. from django.urls import reverse
  6. from django.utils import timezone
  7.  
  8. from accounts.managers import CustomUserManager
  9.  
  10.  
  11. class User(AbstractBaseUser, PermissionsMixin):
  12.     email = models.EmailField(unique=True)
  13.     is_staff = models.BooleanField(default=False)
  14.     is_active = models.BooleanField(default=True)
  15.     date_joined = models.DateTimeField(default=timezone.now)
  16.  
  17.     USERNAME_FIELD = 'email'
  18.     REQUIRED_FIELDS = []
  19.  
  20.     objects = CustomUserManager()
  21.     USER_TYPE_CHOICES = (
  22.         (1, 'guardian'),
  23.         (2, 'teacher'),
  24.         (3, 'manager'),
  25.         (4, 'superuser'),
  26.     )
  27.     user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES, null=True)
  28.  
  29.     def __str__(self):
  30.         return self.email
  31.  
  32.  
  33. class Guardian(models.Model):
  34.     user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
  35.     first_name = models.CharField(max_length=255, null=True)
  36.     last_name = models.CharField(max_length=255)
  37.     phone_number = models.CharField(max_length=9)
  38.  
  39.     def __str__(self):
  40.         return f'{self.first_name} {self.last_name}'
  41.  
  42.     def get_absolute_url(self):
  43.         return reverse('guardian-detail', args=[str(self.id)])
  44.  
  45.  
  46. class Student(models.Model):
  47.     first_name = models.CharField(max_length=255)
  48.     last_name = models.CharField(max_length=255)
  49.     age = models.PositiveSmallIntegerField()
  50.     email = models.EmailField(blank=True)
  51.     phone_number = models.CharField(max_length=9, blank=True)
  52.     guardian = models.ForeignKey(Guardian, on_delete=models.CASCADE) # related_name = 'guardians'
  53.  
  54.     def __str__(self):
  55.         return f'{self.first_name} {self.last_name}'
  56.  
  57.     def get_absolute_url(self):
  58.         return reverse('student-detail', args=[str(self.id)])
  59.  
  60.  
  61. class Teacher(models.Model):
  62.     user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
  63.     first_name = models.CharField(max_length=255)
  64.     last_name = models.CharField(max_length=255)
  65.     phone_number = models.CharField(max_length=9)
  66.     street = models.CharField(max_length=255, null=True)
  67.     postal_code = models.CharField(max_length=6, null=True)
  68.     city = models.CharField(max_length=255, null=True)
  69.     PESEL = models.CharField(max_length=255)
  70.     bank_account_number = models.CharField(max_length=255)
  71.  
  72.     def __str__(self):
  73.         return f'{self.first_name} {self.last_name}'
  74.  
  75.  
  76. class Manager(models.Model):
  77.     user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
  78.     first_name = models.CharField(max_length=255)
  79.     last_name = models.CharField(max_length=255)
  80.     phone_number = models.CharField(max_length=9)
  81.  
  82.     # website for school
  83.  
  84.     def __str__(self):
  85.         return f'{self.first_name} {self.last_name}'
Advertisement
Add Comment
Please, Sign In to add comment