bry*_*ryn 5 django django-class-based-views
在使用配方的Django应用程序中,我已DeleteView创建了子类IngredientListItemDeleteView,但我希望结果get_success_url依赖于刚刚删除的项的属性.
我想做这样的事情:
def get_success_url(self):
item = get_object_or_404(IngredientListItem, pk=self.kwargs['pk']) # -> 404
return this_item.recipe.get_absolute_url()
Run Code Online (Sandbox Code Playgroud)
我知道我收到404错误,因为有问题的项目不再存在,但我没有运气存储关于该项目的相关信息(即其包含的食谱),然后才被删除.例如,如果我将get任何代码放入方法中
self.success_url = get_object_or_404(IngredientListItem,
pk=self.kwargs['pk']).recipe.get_absolute_url()
Run Code Online (Sandbox Code Playgroud)
然后到时候success_url看(删除后),它的值为None.
如何使我的成功URL取决于已删除项目的此属性?
在Django 1.6中,该delete方法已被更改,以便在删除对象之前get_success_url调用该方法.
def delete(self, request, *args, **kwargs):
"""
Calls the delete() method on the fetched object and then
redirects to the success URL.
"""
self.object = self.get_object()
success_url = self.get_success_url()
self.object.delete()
return HttpResponseRedirect(success_url)
Run Code Online (Sandbox Code Playgroud)
我建议您覆盖上面的删除方法,直到升级到Django 1.6.如果您需要为多个类执行此操作,则可以创建一个mixin.
请注意,您不需要从数据库中获取项目get_item_or_404- 您可以在get_success_url方法中访问它self.object.
| 归档时间: |
|
| 查看次数: |
3802 次 |
| 最近记录: |