Django用户ID字段

时间:2011-08-01 12:15:18

标签: python django postgresql

我正在使用以下代码创建一个新的User对象:

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?

3 个答案:

答案 0 :(得分:3)

尝试

user_id = user.pk

而不是

user_id = user.id

答案 1 :(得分:2)

如果您想创建用户,可以尝试以下操作:

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.

顺便说一句,这也标准化了电子邮件地址&所有

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

如果您想了解更多相关信息,请阅读模型经理。

答案 2 :(得分:0)

这不是django特有的,但请查看SQLAlchemy对PostgreSQL的{​​{1}}的处理:

http://www.sqlalchemy.org/docs/dialects/postgresql.html#insert-update-returning

我不知道你是如何强迫Django的ORM来使用它的,但是SQLA正在利用pscopg2获得RETURNING支持。