我正在查看 Django 内置的用户实现,并且有几个问题
- 识别用户的正确方法是什么?用户名是唯一的 - 所以它可能是一个标识符,但它们很容易更改(u.username = 'somethingelse', u.save())。谷歌搜索找到一个
id
字段,但为什么不在文档中(一个错误,或者我不应该使用它?) - 如何使用户 ID 自动递增?在文档中的某处,它建议不要删除用户,但我喜欢让用户根据需要删除他们的信息。我检查了 - 删除用户时,用户 ID 被释放
- Django 是如何做并发的?关于如何使您自己的查询并发证明有几个线程,但我没有找到任何关于 Django 的内置类(例如用户)是否是并发的。例如,是否有可能两个用户可以同时使用相同的用户名注册?这是一个相对简单的示例,因为可以使用普通的旧约束生成表,但是应该(?)使用事务的更复杂的情况(更新权限?)呢?
- django 会“删除级联”吗?回到问题 2,如果我删除了一个用户,并且与该用户 id 相关的所有内容都被删除了,我认为如果其他人获得相同的 id 是可以的(如果有人用用户为页面添加书签可能会造成混淆id 现在是新用户)
删除用户并重用 ID 的示例代码(在 django shell 中)
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