我有一个我创建的用户配置文件,需要传递一些参数以避免IntegrityError
,例如不可空字段。我在页面底部编写了我的创建钩子here,但是当我调用create_user
时,我得到了完整性错误,因为create_user
正在尝试保存我刚创建的用户未初始化的个人资料。我怎么能绕过这个?
答案 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字段都可以为空或提供合理的默认值,因此,您至少可以创建没有特定信息的对象。通过您的界面,您可以强制用户填写他们的个人资料,但在数据库级别强制执行此操作并不明智。