我正在使用以下代码创建一个新的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?
答案 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
支持。