我有一个名为CMS与类别和文章的应用。很简单。
我覆盖app_index.html来启用基于ajax的拖放排序,并将文章从一个类别移到另一个类别。
现在,我想在保存/删除一篇文章或一个类别之后,重定向到cms的app_index.html,而不是模型的change_list.html。这是如何做到的呢?
谢谢
class Category(models.Model):
order = models.IntegerField()
title = models.CharField(max_length=100)
text = models.TextField()
class Article(models.Model):
published = models.BooleanField(default=None)
images = generic.GenericRelation(Photo)
category = models.ForeignKey(Category)
title = models.CharField(max_length=100)
text = models.TextField()
order = models.IntegerField(blank = True, null = True)丹尼尔的回答完成了一半的工作:在更改文章和类别之后重定向。
一个不太优雅的解决方案:在urls.py中重定向
def redirect_cms(response):
return HttpResponseRedirect('/admin/cms/')
urlpatterns += patterns('',
(r'^admin/cms/article/$',redirect_cms),还有别的主意吗?
发布于 2009-10-07 15:55:25
在admin子类中,重写response_change和/或response_add方法。在分别为现有实例和新实例保存管理表单后调用这些实例,并负责返回当前将您带到change_list页面的change_list。
看看django.contrib.admin.options中的原始代码,看看您需要做什么。
编辑:删除可以通过两种方式进行:由于change_list页面上的操作,在这种情况下,您可以使用response_action方法;或者由于更改表单上的删除,不幸的是没有等效的方法。处理此问题的一种方法可能是重写应用程序的change_form.html模板,并删除删除链接,因此删除的唯一方法是通过变更列表。一点也不理想。
发布于 2013-12-10 09:34:17
问题已得到解答,但删除后重定向的问题未予解决。也许下面的解决方案会对某些人有帮助。Django的ModelAdmin类具有delete_view成员函数。它做了两件事:
POST,则显示删除确认页。如果确认并单击“删除”,它将生成一个POST请求。POST,视图将删除请求的项,并将一个HttpResponseRedirect返回给变更列表(如果用户没有更改权限,则返回管理索引)。因此,让我们按照以下方式重写它。
from django.http import HttpResponseRedirect
class MyAdmin(admin.ModelAdmin):
def delete_view(self, request, object_id, extra_context=None):
"""Redirect to website index page on delete."""
response = super(MyAdmin, self).delete_view(request, object_id, extra_context)
# Use our own redirect
if isinstance(response, HttpResponseRedirect):
return HttpResponseRedirect('/') # Any URL here
return response它似乎在Django 1.6下为我工作。
发布于 2014-06-16 05:33:28
在Django 1.7中,有一个可以覆盖管理对象的response_delete方法。请参阅这里
class MyAdmin(admin.ModelAdmin):
def response_delete(self, request, obj_display):
return HttpResponseRedirect("my_url")https://stackoverflow.com/questions/1532324
复制相似问题