from django.db import models from django.contrib.auth.models import AbstractBaseUser from django.conf import settings class User(AbstractBaseUser): email = models.EmailField(unique=True) username = models.CharField(max_length=100, unique=True) date_joined = models.DateTimeField(auto_now_add=True) last_login = models.DateTimeField(auto_now=True) is_admin = models.BooleanField(default=False) is_staff = models.BooleanField(default=False) is_active = models.BooleanField(default=True) is_superuser = models.BooleanField(default=False) USERNAME_FIELD = 'email' def __str__(self): return f'{self.username} - {self.email}' def has_perm(self, perm, obj=None): return self.is_admin def has_module_perms(self, app_label): return True class Type(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Post(models.Model): image = models.ImageField(upload_to='images/', null=True, blank=True) title = models.CharField(max_length=100) content = models.TextField() post_type = models.ForeignKey(Type, on_delete=models.CASCADE) date_posted = models.DateTimeField(auto_now_add=True) author = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE) def __str__(self): return self.title