python - 如何使用信号在 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()
解决方案
确保在您的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)
推荐阅读
- javascript - 为什么 querySelector 不能在远程 wordpress 上工作(它在 localhost 上工作)
- vba - 在 PowerPoint 中使用 VBA 使用 LeftIndent 获取精确的英寸数
- c# - 使用 ICommand C# 将 UIElement 添加到 MainWindow
- javascript - 在javascript中使用set方法时如何在数组中累积特定的重复索引
- swift - 在 Swift/CoreData 中保存具有与日期相关的可变属性的数据结构的最佳方法
- javascript - 注册页面不会呈现
- javascript - 如何在 Vue.js 中显示 REST API 响应
- javascript - 动态添加具有不同值的 DIV 元素
- javascript - 将对象转换为数组并滚动它的所有值
- mysql - 如何合并列是数据透视表