TypeError in view: Field expected a number 但得到了 SimpleLazyObject

TypeError in view: Field expected a number but got SimpleLazyObject

我升级到 django v3.1,突然出现这个错误:

Field 'id' expected a number but got <SimpleLazyObject: '23'>.

失败的代码行是这样的:

my_obj = get_object_or_404(MyModel, pk=kwargs.get('pk'))

知道我做错了什么吗?

谢谢!

经过一番谷歌搜索后,我发现了这个 post by Aaron O. Ellis

诀窍不是直接使用 kwargs 而是从视图 class 和 self:

my_obj = get_object_or_404(MyModel, pk=self.kwargs.get('pk'))

希望这对其他人也有帮助。