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呢?
3 个回答
0
这不是专门针对Django的,但可以看看SQLAlchemy是怎么处理PostgreSQL
的RETURNING
的:
http://www.sqlalchemy.org/docs/dialects/postgresql.html#insert-update-returning
我不知道你怎么能让Django的ORM使用这个功能,但SQLAlchemy是通过psycopg2来支持RETURNING
的。
5
试试这个
user_id = user.pk
而不是这个
user_id = user.id
3
如果你想创建一个用户,可以试试下面的代码:
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.
顺便说一下,这段代码还会把电子邮件地址等进行标准化处理。
如果你需要设置其他参数,比如名字,只需使用你的用户变量,把这些值赋给它,然后保存就可以了。
如果你想了解更多信息,可以看看关于模型管理器的相关内容。