信号不起作用的原因=用户注册时创建配置文件
我想知道真相
- ----设置
INSTALLED_APPS = [
'main',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
- ----型号
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
# Create your models here.
class profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
music = models.CharField(max_length=50)
skils = models.CharField(max_length=50)
search = models.CharField(max_length=50)
posts = models.CharField(max_length=50)
boi = models.TextField()
img = models.ImageField(upload_to="profile-img")
def __str__(self):
return self.user
def create_profile(sender, **kwargs):
if kwargs['created']:
user_profile = profile.objects.create(user=kwargs['instance'])
post_save.connect(create_profile, sender=User)
为什么代码不工作
为什么代码不工作
1条答案
按热度按时间insrf1ej1#
您在
profile
类中定义了create_profile
,因此post_save
无法访问它。仅供参考,signal不是执行have a look to django-antipattern article about signals操作的最合适方式。如果我是你,我会使用自定义用户模型并覆盖其保存方法。