2011-08-01 7 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 

は今、私は変数と呼ばれるのuser_idにユーザーの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_id = user.pk

をお試しください:

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. 

ところで、これにより、電子メールアドレスも正規化されますすべて&です。

ファーストネームなどの他のパラメータを割り当てる必要がある場合は、ユーザー変数を使用してこれらの値に割り当てて保存します。

詳細については、モデルマネージャーをお読みください。

+0

ありがとう、それは動作しなかったことを除いて、私を助けました。私はそれをわずかに変更しなければならなかった。解決策は次のとおりでした: user = User.objects.create_user(... – ralfe

+0

私がこれを書かなかった場合は、申し訳ありませんが、私がこれを書いたときにちょっと離れていたに違いない! –

3

は、ユーザーを作成する場合は、次のことを試みることができる代わりに

user_id = user.id

+0

こんにちは、この提案に感謝します。残念ながら、それはまったく同じ結果を持っているようです。 – ralfe

関連する問題