[英]django signals not creating user profile upon user creation
我正在尝试创建一个简单的信号,在用户注册新帐户后为用户创建配置文件 object。 我错过了什么?
信号.py
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
#from django_cleanup.signals import cleanup_pre_delete
#from sorl.thumbnail import delete
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance, bio="", linkedin_URL="", isCoach=False)
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
# def sorl_delete(**kwargs):
# delete(kwargs['file'])
# cleanup_pre_delete.connect(sorl_delete)
应用程序.py
from django.apps import AppConfig
class EventsConfig(AppConfig):
name = 'events'
def ready(self):
import events.signals
有时 django 信号在单独的文件中不起作用时尝试将信号代码放在您的 models.py 上,如下所示:
from django.db.models.signals import post_save
#signals_section
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance, bio="", linkedin_URL="", isCoach=False)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
post_save.connect(create_profile, sender=User)
post_save.connect(save_profile, sender=User)
要解决此问题,您可以将app's config
添加到两个文件中的任何一个。
settings.py
文件的INSTALLED_APPS
中,如此链接中所述: Django create profile for user signal或者,
app
的__init__.py
文件中,像这样(在本例中,相关应用是events
): default_app_config = 'events.apps.EventsConfig'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.