在Django中pk=request.user和pk=request.user.id结果相同

6 投票
1 回答
3836 浏览
提问于 2025-04-17 09:56
class MyUser(User):
    job = ...
    city = ....

我用 MyUser.objects.get(pk=request.user)MyUser.objects.get(pk=request.user.id) 这两行代码,得到的结果是一样的。从文档上看,pk应该是一个整数。但是request.user是一个对象。为什么用对象和用户ID查询的结果会相同呢?

补充说明:我知道request.user是个对象,但我想知道为什么结果是一样的。

提前谢谢你们!

1 个回答

9

这是设计使然——如果你把一个模型对象作为查询的参数传递,其实就等于传递了它的主键。

如果不是这样的话,要么就必须传递主键,要么就会出现错误,这样只会让人烦。

感谢rebus提供这个来源的参考:https://code.djangoproject.com/browser/django/trunk/django/db/models/fields/related.py#L175

撰写回答