2011-08-01 30 views
4

我使用下面的代码创建一个新的用户对象:Django的用户ID字段

user = User(username=new_data['username'], email=new_data['email'], first_name=new_data['email']) 
user.save() 
user_id = user.id 

现在,我需要获取用户的id到一个变量称为USER_ID。但是,当我这样做时,user_id的值为“Nothing”。然而,当我查看数据库时,我可以在数据库中看到新创建的用户条目。

如何获取用户记录的ID?

+0

这*应该*工作。你可以尝试一次新鲜的会议,并在这里复制/粘贴完整的输出? –

+0

以下是我最终需要做的事情: user = User.objects.create_user(username = new_data ['username'],email = new_data ['email']) user.set_password(new_data ['password'] ) user.first_name = new_data ['first_name'] user.userid = user.pk user_id = user.pk user.save() – ralfe

回答

1

如果你想创建一个用户,你可以尝试以下方法:

user = User.objects.create_user(username=new_data['username'], email=new_data['email']) 
print user.pk #Already works as create_user saves the new instance. 
user.first_name = new_data['email'] #Can't assign to first_name in create_user. 
user.save() 
print user.pk #Will work. 

顺便说一句,这也正常化了电子邮件地址ess &全部。

如果您需要分配其他参数,如名字,只需使用您的用户变量,分配给这些值,然后保存。

如果您想了解更多信息,请阅读Model manager。

+0

谢谢,这帮了我很多,但它没有奏效。我不得不稍微改变它。解决方案是: user = User.objects.create_user(... – ralfe

+0

)是的,当然,如果我没有写出来的话,对不起,当我写这篇文章的时候肯定已经离开了!很高兴帮助:) –

3

尝试

user_id = user.pk

代替

user_id = user.id

+0

嗨,感谢您的建议。不幸的是,这似乎有完全相同的结果。 – ralfe