У меня был рабочий сигнал, который создает новый профиль при создании нового пользователя, но я хотел расширить пользователей как учитель, родитель или администратор, после чего он перестал работать.
Models.py
from django.db import models
from django.contrib.auth.models import User
from PIL import Image
from django.core.validators import MaxValueValidator
from phone_field import PhoneField
class Profile(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE)
image = models.ImageField(default = 'default.jpg', upload_to = 'profile_pics')
def __str__(self):
return f'{self.user.username} Profile'
def save(self):
super().save()
img = Image.open(self.image.path)
if img.height > 600 or img.width > 600:
output_size = (600,600)
img.thumbnail(output_size)
img.save(self.image.path)
class Parent(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
def __str__(self):
return '{}, {}'.format(self.last_name, self.first_name)
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
def __str__(self):
return '{}, {}'.format(self.last_name, self.first_name)
Admin.py
from django.contrib import admin
from .models import Profile, Student, Teacher, Parent
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
class ParentInLine(admin.TabularInline):
model = Parent
can_delete = False
verbose_name_plural = 'parent'
class TeacherInLine(admin.TabularInline):
model = Teacher
can_delete = False
verbose_name_plural = 'teacher'
class UserAdmin(BaseUserAdmin):
inlines = (ParentInLine, TeacherInLine)
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
admin.site.register(Profile)
admin.site.register(Teacher)
admin.site.register(Parent)
Signals.py
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender = User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(User = instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
Apps.py
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
import users.signals
Нет ошибок,но я просто не могу позволить ему автоматически создавать профиль для каждого нового пользователя. Что-то я делаю не так? Или что-то, что мне нужно сделать?