我无法向使用 Django 管理员创建的任何用户添加电子邮件
i cant add an email to any user i created using the the django admin
这是我的问题我有一个有多个用户的网站,但我将用户分为 2,医生和病人,医生比病人有更高的权限,但每当我添加 user.doctor,我不会得到他们的电子邮件地址,但只有电子邮件地址可用于登录,同时我设置每个注册任何用户自动创建患者,所以我可以使用管理面板升级他们,但如果我直接创建任何用户我不会收到他们的电子邮件,只有其余信息
显示的电子邮件地址是我使用网站或 createsuperuser
创建的
这是我的代码
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)
我发现电子邮件地址也会从管理站点手动添加
[! in your admin site you just have to edit and add it]1
这是我的问题我有一个有多个用户的网站,但我将用户分为 2,医生和病人,医生比病人有更高的权限,但每当我添加 user.doctor,我不会得到他们的电子邮件地址,但只有电子邮件地址可用于登录,同时我设置每个注册任何用户自动创建患者,所以我可以使用管理面板升级他们,但如果我直接创建任何用户我不会收到他们的电子邮件,只有其余信息
这是我的代码
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)
我发现电子邮件地址也会从管理站点手动添加
[! in your admin site you just have to edit and add it]1