繁体   English   中英

如何使用信号基于Django中的用户属性创建特定的配置文件

[英]How to create a particular profile based on user attribute in Django using signals

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

下面是我在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()

确保在您的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)

替换为:

if sender != User.is_company:

对此:

if instance.is_company:

用户是一个类名,实例是它的对象。

暂无
暂无

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

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