首页 > 解决方案 > 如何使用信号在 Django 中基于用户属性创建特定配置文件

问题描述

我有“公司”或“申请人”的用户,每个用户都有不同的属性。我想根据用户属性在注册时创建公司资料或申请人资料。

下面是我在 signals.py 中使用的代码,它不起作用。

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
        if created:
            if sender != User.is_company:
                Applicant.objects.create(user=instance)
            else:
                Company.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    if instance.is_applicant:
        instance.applicant.save()
    else:
        instance.company.save()

标签: pythondjangosignals

解决方案


确保在您的apps.py中导入信号

#my_app/apps.py

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'My App'

    def ready(self):
        import my_app.signals

比在signals.py

#my_app/signals.py

@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    if instance.is_applicant:
        Applicant.objects.create(user=instance)
    else:
        Company.objects.create(user=instance)

推荐阅读