你应该将你的功能更改为这个
@receiver(post_save,sender=UserProfile)
def send_user_data_when_created_by_admin(sender, instance, **kwargs):
first_name = instance.user.first_name
print('first name is',first_name)
last_name = instance.user.last_name
address = instance.address
email = instance.user.email
html_content = "your first name:%s <br> last name:%s <br> address:%s"
message=EmailMessage(subject='welcome',body=html_content %(first_name,last_name,address),to=[email])
message.content_subtype='html'
message.send()
你的模型应该是这个
class UserProfile(models.Model):
address = models.CharField(max_length=300,blank=True,null=True,help_text=("enter the address"))
contact = models.CharField(max_length=100,blank=True,null=True,help_text=("enter the contact"))
user = models.ForeignKey(User)
def __str__(self):
return (self.username)
所以每当你想保存一个新对象时,你可以使用它
user = User.objects.create_user(username=username, email=email, password=password, first_name=first_name, last_name=last_name)
UserProfile.objects.create(user=user, contact=contact, address=address)
user.save()
其中用户名、电子邮件、密码、名字、姓氏、联系人和地址是您创建的表单中各自字段值的cleaned_data。
您可以将管理员设计为在创建用户时强制创建用户配置文件,方法是在您的admin.py
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from account.models import UserProfile
class UserProfileInline(admin.StackedInline):
model = UserProfile
can_delete = False
class UserProfileAdmin(UserAdmin):
inlines = (UserProfileInline,)
admin.site.unregister(get_user_model())
admin.site.register(get_user_model(), UserProfileAdmin)
如果您遇到任何错误,请告诉我