为了账号安全,请及时绑定邮箱和手机立即绑定

创建一个 post_save 信号,为我创建一个配置文件对象

创建一个 post_save 信号,为我创建一个配置文件对象

万千封印 2023-08-22 10:40:47
下午好,我的用户模型中有以下信号,但在创建用户时它没有创建配置文件对象,这是我做错的。  def create_profile(sender, instance, created, **kwargs):    if created:        Profile.objects.create(user=instance)def save_profile(sender, instance, **kwargs):    instance.create_profile.save()post_save.connect(create_profile, sender=User)post_save.connect(save_profile, sender=User)
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

创建一个 signal.py 文件,然后在其中添加以下代码:


from django.contrib.auth.models import User

from django.db.models.signals import post_save

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, instance, **kwargs):

    instance.profile.save()

然后在您的用户 apps.py 中添加以下代码:


class UsersConfig(AppConfig):

name = 'users'


    def ready(self):

        import users.signals

那么你就完成了!


查看完整回答
反对 回复 2023-08-22
?
aluckdog

TA贡献1847条经验 获得超7个赞

假设您有一个名为“profiles”的应用程序profiles/signals.py


from django.contrib.auth.models import User

from django.db.models.signals import post_save

from django.dispatch import receiver


from profiles.models import Profile


@receiver(post_save, sender=User)

def create_user_profile(sender, instance, created, **kwargs):

    if created:

        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)

def save_user_profile(sender, instance, **kwargs):

    instance.profile.save()

在profiles/app.py


from django.apps import AppConfig

from django.utils.translation import ugettext_lazy as _


class ProfilesConfig(AppConfig):

    name = 'cmdbox.profiles'

    verbose_name = _('profiles')


    def ready(self):

        import cmdbox.profiles.signals  # noqa

终于在profiles/__init__.py


default_app_config = 'profiles.apps.ProfilesConfig'


查看完整回答
反对 回复 2023-08-22
  • 2 回答
  • 0 关注
  • 5288 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信