0

我创建了一个用户配置文件,需要将一些参数传递给它以避免IntegrityError's,例如不可为空的字段。我按照页面底部的此处所述编写了创建挂钩,但是当我调用 时create_user,我收到完整性错误,因为create_user它试图保存我刚刚使用未初始化的配置文件创建的用户。我怎样才能解决这个问题?

4

1 回答 1

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信号。通常,配置文件中的所有非字符字段都可以为空或提供合理的默认值,因此,您至少可以在没有特定信息的情况下创建对象。通过您的界面,您可以强制用户填写他们的个人资料,但在数据库级别强制执行此操作并不谨慎。

于 2012-05-23T17:20:26.500 回答