繁体   English   中英

django 表示在创建用户时未创建用户配置文件

[英]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添加到两个文件中的任何一个。

  1. 在您的settings.py文件的INSTALLED_APPS中,如此链接中所述: Django create profile for user signal

或者,

  1. 在相关app__init__.py文件中,像这样(在本例中,相关应用是events ): default_app_config = 'events.apps.EventsConfig'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM