将字段传递给用户配置文件的post_save挂钩?

时间:2012-05-23 17:02:58

标签: python django

我有一个我创建的用户配置文件,需要传递一些参数以避免IntegrityError,例如不可空字段。我在页面底部编写了我的创建钩子here,但是当我调用create_user时,我得到了完整性错误,因为create_user正在尝试保存我刚创建的用户未初始化的个人资料。我怎么能绕过这个?

1 个答案:

答案 0 :(得分:1)

在提供的链接上没有关于如何自动创建用户个人资料的详细信息,因此我不确定您是如何实际设置的。但是,这是典型的方式:

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.get_or_create(user=instance)

signals.post_save.connect(create_user_profile, sender=User)

听起来您的问题是UserProfile(或您的等效模型)具有不能为空的其他字段,因此,您希望为这些字段提供值。但是,使用post_save信号根本不可能。通常,配置文件中的所有非char字段都可以为空或提供合理的默认值,因此,您至少可以创建没有特定信息的对象。通过您的界面,您可以强制用户填写他们的个人资料,但在数据库级别强制执行此操作并不明智。