Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
- from .managers import UserManager
- import tagulous
- # Create your models here.
- class User(AbstractBaseUser, PermissionsMixin):
- USER_TYPE_CHOICES = (("cl", "client"), ("comp", "company"))
- email = models.EmailField(unique=True, max_length=250)
- date_joined = models.DateTimeField(auto_now_add=True)
- is_staff = models.BooleanField(default=False)
- is_active = models.BooleanField(default=True)
- user_type = models.CharField(max_length=10, choices=USER_TYPE_CHOICES)
- objects = UserManager()
- USERNAME_FIELD = "email"
- REQUIRED_FIELDS = []
- class Meta:
- ordering = ["email"]
- # for clients
- class Client(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="client")
- first_name = models.CharField(max_length=30)
- last_name = models.CharField(max_length=60)
- birth = models.DateField()
- skills = tagulous.models.TagField(force_lowercase=True)
- def get_full_name(self):
- return f"{self.first_name} {self.last_name}"
- def get_short_name(self):
- return self.first_name
- def __str__(self):
- return f"{self.first_name} - {self.user.email}"
- # for companies
- class Company(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="company")
- name = models.CharField(max_length=250)
- def __str__(self):
- return self.name
- class Job(models.Model):
- company = models.ForeignKey(User, on_delete=models.CASCADE, related_name="job")
- title = models.CharField(max_length=120)
- info = models.TextField()
- def __str__(self):
- return f"{self.title} - {self.company.name}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement