私は Django のビルトインのユーザー実装を検討していますが、いくつか質問があります。
- ユーザーを識別する正しい方法は何ですか? ユーザー名は一意であるため、識別子になる可能性がありますが、簡単に変更できます (u.username = 'somethingelse'、u.save())。グーグルは
id
フィールドを見つけますが、それがドキュメントにないのはなぜですか (間違いですか、それとも使用すべきではないのでしょうか?) - ユーザー ID を自動インクリメントするにはどうすればよいですか? ドキュメントのどこかで、ユーザーを削除しないことが推奨されていますが、ユーザーが必要に応じて情報を削除できるようにするのが好きです。確認しました-ユーザーを削除すると、ユーザーIDが解放されます
- Django はどのように並行処理を行いますか? これには、独自のクエリを同時実行防止にする方法に関するいくつかのスレッドがありますが、Django の組み込みクラス (ユーザーなど) が同時実行であるかどうかについては何も見つかりませんでした。たとえば、2 人のユーザーが同時に同じユーザー名で登録することは可能ですか? テーブルは単純な古い制約で生成できるため、これは比較的単純な例ですが、トランザクションを使用する必要がある (?) より複雑なケース (権限の更新?) についてはどうでしょうか?
- ジャンゴは「カスケード削除」を行いますか? 質問 2 に戻ると、ユーザーを削除し、そのユーザー ID に関連するすべてが削除された場合、他の誰かが同じ ID を取得しても問題ないと思います (誰かがそのユーザーのページをブックマークすると混乱する可能性があります)。 id であり、現在は新しいユーザーです)
ユーザーが削除され、ID を再利用するサンプル コード (django シェル内)
userA = User.objects.create_user('userA')
userA.id # (prints 2 for example)
# I go to the admin page, I see the new user
userA.delete()
# Admin page, userA gone
userB = User.objects.create_user('userB')
userB.id # (prints 2 again)
# UserB is visible in the admin page