mirror of
https://github.com/django/django.git
synced 2025-08-01 09:32:50 +00:00
Added further flexibility to ModelAdmin for controlling post-save redirections.
Refs #19505.
This commit is contained in:
parent
f80a1934cd
commit
cee40c7d79
3 changed files with 45 additions and 11 deletions
|
@ -56,10 +56,14 @@ class Person(models.Model):
|
|||
|
||||
class PersonAdmin(admin.ModelAdmin):
|
||||
|
||||
def response_post_save(self, request, obj):
|
||||
def response_post_save_add(self, request, obj):
|
||||
return HttpResponseRedirect(
|
||||
reverse('admin:admin_custom_urls_person_history', args=[obj.pk]))
|
||||
|
||||
def response_post_save_change(self, request, obj):
|
||||
return HttpResponseRedirect(
|
||||
reverse('admin:admin_custom_urls_person_delete', args=[obj.pk]))
|
||||
|
||||
|
||||
class Car(models.Model):
|
||||
name = models.CharField(max_length=20)
|
||||
|
|
|
@ -94,10 +94,11 @@ class CustomRedirects(TestCase):
|
|||
def tearDown(self):
|
||||
self.client.logout()
|
||||
|
||||
def test_post_save_redirect(self):
|
||||
def test_post_save_add_redirect(self):
|
||||
"""
|
||||
Ensures that ModelAdmin.response_post_save() controls the redirection
|
||||
after the 'Save' button has been pressed.
|
||||
Ensures that ModelAdmin.response_post_save_add() controls the
|
||||
redirection after the 'Save' button has been pressed when adding a
|
||||
new object.
|
||||
Refs 8001, 18310, 19505.
|
||||
"""
|
||||
post_data = { 'name': 'John Doe', }
|
||||
|
@ -109,6 +110,22 @@ class CustomRedirects(TestCase):
|
|||
self.assertRedirects(
|
||||
response, reverse('admin:admin_custom_urls_person_history', args=[persons[0].pk]))
|
||||
|
||||
def test_post_save_change_redirect(self):
|
||||
"""
|
||||
Ensures that ModelAdmin.response_post_save_change() controls the
|
||||
redirection after the 'Save' button has been pressed when editing an
|
||||
existing object.
|
||||
Refs 8001, 18310, 19505.
|
||||
"""
|
||||
Person.objects.create(name='John Doe')
|
||||
self.assertEqual(Person.objects.count(), 1)
|
||||
person = Person.objects.all()[0]
|
||||
post_data = { 'name': 'Jack Doe', }
|
||||
response = self.client.post(
|
||||
reverse('admin:admin_custom_urls_person_change', args=[person.pk]), post_data)
|
||||
self.assertRedirects(
|
||||
response, reverse('admin:admin_custom_urls_person_delete', args=[person.pk]))
|
||||
|
||||
def test_post_url_continue(self):
|
||||
"""
|
||||
Ensures that the ModelAdmin.response_add()'s parameter `post_url_continue`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue