from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver class Profile(models.Model): USER_TYPE_CHOICES = ( ('student', 'Студент'), ('instructor', 'Инструктор'), ('dispatcher', 'Диспетчер'), ('admin', 'Администратор'), ) user = models.OneToOneField(User, on_delete=models.CASCADE) user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES) phone = models.CharField(max_length=15, blank=True) address = models.TextField(blank=True) birth_date = models.DateField(null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return f"{self.user.username} - {self.get_user_type_display()}" @receiver(post_save, sender=User) def create_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance) @receiver(post_save, sender=User) def save_user_profile(sender, instance, **kwargs): instance.profile.save()