from django.contrib.auth.models import AbstractUser from django.db import models class BaseUser(AbstractUser): # Additional fields to extend the default user model # Profile-related fields image = models.ImageField(upload_to='user_profiles/', blank=True, null=True) bio = models.TextField(blank=True, null=True) address = models.TextField(blank=True, null=True) contact_number = models.CharField(max_length=15, blank=True, null=True) citizenship = models.CharField(max_length=100, blank=True, null=True) certificate = models.FileField(upload_to='certificates/', blank=True, null=True) # Verification and status is_verified = models.BooleanField(default=False) # Financial or business-related fields price = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True) ratings = models.DecimalField(max_digits=3, decimal_places=2, default=0.00) # Role and other identifiers role = models.CharField( max_length=50, choices=[('CLIENT', 'CLIENT'), ('ADMIN', 'ADMIN'), ('SERVICE_PROVIDER', 'SERVICE_PROVIDER')], default='CLIENT' ) # Time-related fields member_since = models.DateTimeField(auto_now_add=True) profile_updated = models.DateTimeField(auto_now=True) # Token field for verification or authentication purposes token = models.CharField(max_length=256, blank=True, null=True) def __str__(self): return self.username class Meta: verbose_name = 'Base User' verbose_name_plural = 'Base Users'