mirror of
https://github.com/django/django.git
synced 2025-08-03 02:23:12 +00:00
Fixed #15103 - SuspiciousOperation with limit_choices_to and raw_id_fields
Thanks to natrius for the report. This patch also fixes some unicode bugs in affected code. git-svn-id: http://code.djangoproject.com/svn/django/trunk@15347 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
22eaf77f9d
commit
c24bdf044b
7 changed files with 77 additions and 21 deletions
|
@ -178,6 +178,26 @@ class Thing(models.Model):
|
|||
class ThingAdmin(admin.ModelAdmin):
|
||||
list_filter = ('color__warm', 'color__value')
|
||||
|
||||
class Actor(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
age = models.IntegerField()
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
class Inquisition(models.Model):
|
||||
expected = models.BooleanField()
|
||||
leader = models.ForeignKey(Actor)
|
||||
def __unicode__(self):
|
||||
return self.expected
|
||||
|
||||
class Sketch(models.Model):
|
||||
title = models.CharField(max_length=100)
|
||||
inquisition = models.ForeignKey(Inquisition, limit_choices_to={'leader__name': 'Palin',
|
||||
'leader__age': 27,
|
||||
})
|
||||
def __unicode__(self):
|
||||
return self.title
|
||||
|
||||
class Fabric(models.Model):
|
||||
NG_CHOICES = (
|
||||
('Textured', (
|
||||
|
@ -642,6 +662,9 @@ admin.site.register(Section, save_as=True, inlines=[ArticleInline])
|
|||
admin.site.register(ModelWithStringPrimaryKey)
|
||||
admin.site.register(Color)
|
||||
admin.site.register(Thing, ThingAdmin)
|
||||
admin.site.register(Actor)
|
||||
admin.site.register(Inquisition)
|
||||
admin.site.register(Sketch)
|
||||
admin.site.register(Person, PersonAdmin)
|
||||
admin.site.register(Persona, PersonaAdmin)
|
||||
admin.site.register(Subscriber, SubscriberAdmin)
|
||||
|
|
|
@ -393,6 +393,17 @@ class AdminViewBasicTest(TestCase):
|
|||
response = self.client.get("/test_admin/admin/admin_views/workhour/?employee__person_ptr__exact=%d" % e1.pk)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_allowed_filtering_15103(self):
|
||||
"""
|
||||
Regressions test for ticket 15103 - filtering on fields defined in a
|
||||
ForeignKey 'limit_choices_to' should be allowed, otherwise raw_id_fields
|
||||
can break.
|
||||
"""
|
||||
try:
|
||||
self.client.get("/test_admin/admin/admin_views/inquisition/?leader__name=Palin&leader__age=27")
|
||||
except SuspiciousOperation:
|
||||
self.fail("Filters should be allowed if they are defined on a ForeignKey pointing to this model")
|
||||
|
||||
class SaveAsTests(TestCase):
|
||||
fixtures = ['admin-views-users.xml','admin-views-person.xml']
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue