mirror of
https://github.com/django/django.git
synced 2025-08-02 18:13:02 +00:00
Fixed #23754 -- Always allowed reference to the primary key in the admin
This change allows dynamically created inlines "Add related" button to work correcly as long as their associated foreign key is pointing to the primary key of the related model. Thanks to amorce for the report, Julien Phalip for the initial patch, and Collin Anderson for the review.
This commit is contained in:
parent
e0d1f2684a
commit
f9c4e14aec
9 changed files with 67 additions and 27 deletions
|
@ -612,26 +612,30 @@ class AdminViewBasicTest(AdminViewBasicTestCase):
|
|||
self.assertEqual(response.status_code, 400)
|
||||
self.assertEqual(len(calls), 1)
|
||||
|
||||
# Specifying a field referenced by another model should be allowed.
|
||||
response = self.client.get("/test_admin/admin/admin_views/section/", {TO_FIELD_VAR: 'id'})
|
||||
# #23839 - Primary key should always be allowed, even if the referenced model isn't registered.
|
||||
response = self.client.get("/test_admin/admin/admin_views/notreferenced/", {TO_FIELD_VAR: 'id'})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# Specifying a field referenced by another model though a m2m should be allowed.
|
||||
response = self.client.get("/test_admin/admin/admin_views/m2mreference/", {TO_FIELD_VAR: 'id'})
|
||||
# XXX: We're not testing against a non-primary key field since the admin doesn't
|
||||
# support it yet, ref #23862
|
||||
response = self.client.get("/test_admin/admin/admin_views/recipe/", {TO_FIELD_VAR: 'id'})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# #23604 - Specifying the pk of this model should be allowed when this model defines a m2m relationship
|
||||
# #23604 - Specifying a field referenced through a reverse m2m relationship should be allowed.
|
||||
# XXX: We're not testing against a non-primary key field since the admin doesn't
|
||||
# support it yet, ref #23862
|
||||
response = self.client.get("/test_admin/admin/admin_views/ingredient/", {TO_FIELD_VAR: 'id'})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# #23329 - Specifying a field that is not referred by any other model directly registered
|
||||
# to this admin site but registered through inheritance should be allowed.
|
||||
response = self.client.get("/test_admin/admin/admin_views/referencedbyparent/", {TO_FIELD_VAR: 'id'})
|
||||
response = self.client.get("/test_admin/admin/admin_views/referencedbyparent/", {TO_FIELD_VAR: 'name'})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# #23431 - Specifying a field that is only referred to by a inline of a registered
|
||||
# model should be allowed.
|
||||
response = self.client.get("/test_admin/admin/admin_views/referencedbyinline/", {TO_FIELD_VAR: 'id'})
|
||||
response = self.client.get("/test_admin/admin/admin_views/referencedbyinline/", {TO_FIELD_VAR: 'name'})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# We also want to prevent the add and change view from leaking a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue