如何解决尽管使用信号,Django 并未在用户创建时创建用户配置文件
我正在尝试在创建用户时自动创建用户配置文件。 我使用 django 信号来执行此操作并将其导入到 apps.py 文件中,但它仍然无法正常工作,请告诉我我做错了什么。谢谢。
models.py
from django.db import models
from django.contrib.auth.models import User
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'
signals.py
from django.db.models.signal 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,**kwargs):
instance.profile.save()
apps.py
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
import users.signals
在 shell 中('NewUser2' 是使用注册表创建的,'Destiny' 使用管理员获得了一个配置文件)
>>> from django.contrib.auth.models import User
>>> user = User.objects.filter(username='NewUser2').first()
>>> user
<User: NewUser2>
>>> user.profile
Traceback (most recent call last):
django.contrib.auth.models.User.profile.RelatedObjectDoesNotExist: User has no profile.
>>> user.profile.image.url
Traceback (most recent call last):
django.contrib.auth.models.User.profile.RelatedObjectDoesNotExist: User has no profile.
>>> user_created_in_admin = User.objects.filter(username='Destiny').first()
>>> user_created_in_admin.profile.image.url
'/media/default.jpg'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。