我的网页的注册视图(如下)通过 Django 的身份验证模型User创建一个新用户,然后使用该新创建的用户 ID 通过我自己的模型account.Users添加更多信息。我的问题是,虽然我将新用户的 ID 传递给第二个模型(account.Users中的 ForeignKey 列),但我一直收到一个错误,即列 *user_id* 违反了非空约束:
IntegrityError at /account/signup/
null value in column "user_id" violates not-null constraint
以下是我的模型的相关部分:
class Users(models.Model):
user = models.ForeignKey(User, unique=True, null=True, blank=True)
firstname = models.CharField(max_length=100, blank=True, default='')
以及我观点的相关部分:
def signup(request):
if request.method == 'POST' and request.POST['firstname']:
user = User.objects.create_user(request.POST['username'], request.POST['email'], request.POST['password'])
userId = user.id
form = UsersForm(request.POST, request.FILES)
if form.is_valid():
cmodel = form.save()
cmodel.user_id = userId
cmodel.firstname = request.POST['firstname']
cmodel.save()
此错误的原因可能是什么?
除了将 *cmodel.user_id* 设置为等于userId之外,我还尝试将其设置为等于在第一步中创建的用户对象,以及字符串和 int(分别为“1”和 1)。我每次都得到同样的错误。我也尝试将字段更改为cmodel.user。我还可以从 Django 的错误页面中看出变量userId实际上包含一个值。