django:DetailView:self.object从方法post调用时引发错误,但是从get_context_data方法调用时它确实起作用

sma*_*ber 5 django django-generic-views detailview

我创建了一个继承自的类DetailView,并且覆盖了方法get_context_datapost。标题中提到的内容看起来很怪异,因为我可以发邮件给我self.objectget_context_data但不能发邮件,所以我不得不self.get_object()改用。但是我想了解为什么?被self.object删除get_context_data?这样在它之后调用的任何方法都不能使用它或类似的东西吗?

提前致谢

mar*_*dev 7

post在中DetailView,默认情况下不存在method方法,因此您实际上没有创建它来覆盖它,因此您需要自己获取该对象,原因在于该对象可用的原因get_context_data是它已在getmethod 内部获取并保存在objectproperty中。

  • @smarber否。如果您查看DetailView源代码,则在创建对象之后(实际上在get中)在get方法中实际上会调用get_context_data。因此,当您决定创建自己的方法(发布,放置,删除等)时,您需要做同样的事情,您需要自己抓住对象。您是否看过ccbv.co.uk参考? (2认同)