django中pk = request.user和pk = request.user.id的结果相同

时间:2012-01-10 13:42:19

标签: python django

class MyUser(User):
    job = ...
    city = ....

MyUser.objects.get(pk=request.user)MyUser.objects.get(pk=request.user.id)给出了相同的结果。从doc开始,pk必须是int。但是request.user是一个对象。为什么对象和用户ID的查询是相同的?

编辑:我知道request.user是对象,但我想知道为什么结果是相同的。

提前致谢

1 个答案:

答案 0 :(得分:9)

这是设计使用 - 如果将模型对象作为参数传递给查询,则与传递其主键相同。

如果这不是行为,那么要么传递pk,要么是错误,这只会令人讨厌。

感谢rebus对此来源的引用:https://code.djangoproject.com/browser/django/trunk/django/db/models/fields/related.py#L175