вот моя проблема, у меня есть веб-сайт с несколькими пользователями, но я разделил пользователей на 2, Доктор и Пациент, Доктор имеет более высокий авторитет, чем Пациент, но всякий раз, когда я добавляю user.doctor, я не получаю их электронную почту адрес, но только адрес электронной почты может использоваться для входа в систему, тем временем я настраиваю каждую регистрацию, которую любой пользователь делает, чтобы автоматически создавать пациента, поэтому я могу обновить их с помощью панели администратора, но если я создам любого пользователя напрямую, я не получу его электронную почту только остальная информация показанные адреса электронной почты - это те, которые я создал с помощью веб-сайта или createuperuser
вот мой код
models.py
class CustomUser(AbstractUser):
is_doctor = models.BooleanField(default=False)
def __str__(self):
return self.email
class Status(models.Model):
title= models.CharField(max_length=5)
def __str__(self):
return self.title
class Doctor(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, null=True, related_name="doctor")
image = models.ImageField(default='jazeera.jpg', upload_to='profile_pics')
bio = models.TextField()
speciality = models.CharField(max_length=300)
describtion = models.CharField(max_length=100)
status = models.ManyToManyField(Status)
def __str__(self):
return f'{self.user.username}'
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)
class Patient(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, null=True, related_name="patient")
subscribe = models.BooleanField(default=False)
def __str__(self):
return f'{self.user.username}'
@receiver(post_save, sender=CustomUser)
def create_user_profile(sender, instance, created, **kwargs):
print("****", created)
if instance.is_doctor:
Doctor.objects.get_or_create(user=instance)
else:
Patient.objects.get_or_create(user=instance)
@receiver(post_save, sender=CustomUser)
def save_user_profile(sender, instance, **kwargs):
print("_-----")
# print(instance.internprofile.bio, instance.internprofile.location)
if instance.is_doctor:
instance.doctor.save()
else:
Patient.objects.get_or_create(user=instance)
forms.py
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = ('email', 'username',)
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = ('email', 'username',)
class CustomUserUpdateForm(forms.ModelForm):
email = forms.EmailField()
class Meta:
model = CustomUser
fields = ['email', 'username']
class DoctorUpdateForm(forms.ModelForm):
class Meta:
model = Doctor
fields = ['image', 'speciality', 'bio']
class PatientUpdateForm(forms.ModelForm):
class Meta:
model = Patient
fields = [ 'subscribe' ]
admin.py
from .forms import CustomUserCreationForm, CustomUserChangeForm,CustomUserUpdateForm
from .models import CustomUser,Doctor,Patient,Status
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
edit_form = CustomUserUpdateForm
model = CustomUser
list_display = ['email', 'username',]
admin.site.register(CustomUser, CustomUserAdmin)