在Django中pk=request.user和pk=request.user.id结果相同
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