gpt4 book ai didi

保存时 Django 用户配置文件内联创建完整性错误

转载 作者:行者123 更新时间:2023-12-03 14:36:55 24 4
gpt4 key购买 nike

我目前在 Django 中遇到一些用户配置文件问题。

我遵循了建议并创建了用户配置文件:

class UserProfile(models.Model):
user = models.OneToOneField(User)
is_teacher = models.BooleanField(verbose_name = "Teacher", help_text = "Designates whether this user is a teacher and can administer and add students and classes")
school = models.ForeignKey(School)

def __unicode__(self):
return self.user.username

def save(self, *args, **kwargs):
if not self.pk:
try:
p = UserProfile.objects.get(user=self.user)
self.pk = p.pk
except UserProfile.DoesNotExist:
pass

super(UserProfile, self).save(*args, **kwargs)

我还将此用户配置文件内嵌到我的用户管理页面中。这是我用来确保与用户一起创建用户配置文件的方法:

def create_user_profile(sender, instance, created, **kwargs):
"""Create the UserProfile when a new User is saved"""
if created:
print "User Profile Creation: ", created
UserProfile.objects.get_or_create(user=instance)

当我去添加一个新用户时,问题就出现了。在添加学校领域之前,我能够填写所有内容并且效果很好。添加学校字段后,我收到一个 IntegrityError,指出 userprofile.school_id 不能为空。我哪里出错了?

我认为问题是学校的选择没有传递给 get_or_create,所以当它去创建 UserProfile 时,它​​什么也看不到。当单击 is_teacher 的复选框时,它之前是如何工作的?另外,我该如何解决这个问题?

最佳答案

是的,择校没有通过,这里没有通过:

 UserProfile.objects.get_or_create(user=instance)

您只是设置一个用户,并尝试创建配置文件。

null=True, blank=True 添加到学校字段,或者弄清楚学校选择是什么,然后将其传递:

 UserProfile.objects.get_or_create(user=instance, school=school)

关于保存时 Django 用户配置文件内联创建完整性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6709351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com