Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #models.py
- from django.contrib.auth.base_user import AbstractBaseUser
- from django.contrib.auth.models import AbstractUser, PermissionsMixin
- from django.db import models
- from django.urls import reverse
- from django.utils import timezone
- from accounts.managers import CustomUserManager
- class User(AbstractBaseUser, PermissionsMixin):
- email = models.EmailField(unique=True)
- is_staff = models.BooleanField(default=False)
- is_active = models.BooleanField(default=True)
- date_joined = models.DateTimeField(default=timezone.now)
- USERNAME_FIELD = 'email'
- REQUIRED_FIELDS = []
- objects = CustomUserManager()
- USER_TYPE_CHOICES = (
- (1, 'guardian'),
- (2, 'teacher'),
- (3, 'manager'),
- (4, 'superuser'),
- )
- user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES, null=True)
- def __str__(self):
- return self.email
- class Guardian(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
- first_name = models.CharField(max_length=255, null=True)
- last_name = models.CharField(max_length=255)
- phone_number = models.CharField(max_length=9)
- def __str__(self):
- return f'{self.first_name} {self.last_name}'
- def get_absolute_url(self):
- return reverse('guardian-detail', args=[str(self.id)])
- class Student(models.Model):
- first_name = models.CharField(max_length=255)
- last_name = models.CharField(max_length=255)
- age = models.PositiveSmallIntegerField()
- email = models.EmailField(blank=True)
- phone_number = models.CharField(max_length=9, blank=True)
- guardian = models.ForeignKey(Guardian, on_delete=models.CASCADE) # related_name = 'guardians'
- def __str__(self):
- return f'{self.first_name} {self.last_name}'
- def get_absolute_url(self):
- return reverse('student-detail', args=[str(self.id)])
- class Teacher(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
- first_name = models.CharField(max_length=255)
- last_name = models.CharField(max_length=255)
- phone_number = models.CharField(max_length=9)
- street = models.CharField(max_length=255, null=True)
- postal_code = models.CharField(max_length=6, null=True)
- city = models.CharField(max_length=255, null=True)
- PESEL = models.CharField(max_length=255)
- bank_account_number = models.CharField(max_length=255)
- def __str__(self):
- return f'{self.first_name} {self.last_name}'
- class Manager(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
- first_name = models.CharField(max_length=255)
- last_name = models.CharField(max_length=255)
- phone_number = models.CharField(max_length=9)
- # website for school
- def __str__(self):
- return f'{self.first_name} {self.last_name}'
Advertisement
Add Comment
Please, Sign In to add comment