Changeset 9241
- Timestamp:
- 10/21/08 14:03:21 (3 months ago)
- Files:
-
- django/trunk/django/contrib/admin/filterspecs.py (modified) (2 diffs)
- django/trunk/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml (added)
- django/trunk/tests/regressiontests/admin_views/models.py (modified) (1 diff)
- django/trunk/tests/regressiontests/admin_views/tests.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/admin/filterspecs.py
r7967 r9241 61 61 self.lookup_kwarg = '%s__%s__exact' % (f.name, f.rel.to._meta.pk.name) 62 62 self.lookup_val = request.GET.get(self.lookup_kwarg, None) 63 self.lookup_choices = f. rel.to._default_manager.all()63 self.lookup_choices = f.get_choices(include_blank=False) 64 64 65 65 def has_output(self): … … 73 73 'query_string': cl.get_query_string({}, [self.lookup_kwarg]), 74 74 'display': _('All')} 75 for val in self.lookup_choices: 76 pk_val = getattr(val, self.field.rel.to._meta.pk.attname) 75 for pk_val, val in self.lookup_choices: 77 76 yield {'selected': self.lookup_val == smart_unicode(pk_val), 78 77 'query_string': cl.get_query_string({self.lookup_kwarg: pk_val}), django/trunk/tests/regressiontests/admin_views/models.py
r9211 r9241 75 75 return self.id 76 76 77 class Color(models.Model): 78 value = models.CharField(max_length=10) 79 warm = models.BooleanField() 80 def __unicode__(self): 81 return self.value 82 83 class Thing(models.Model): 84 title = models.CharField(max_length=20) 85 color = models.ForeignKey(Color, limit_choices_to={'warm': True}) 86 def __unicode__(self): 87 return self.title 88 89 class ThingAdmin(admin.ModelAdmin): 90 list_filter = ('color',) 91 77 92 admin.site.register(Article, ArticleAdmin) 78 93 admin.site.register(CustomArticle, CustomArticleAdmin) 79 94 admin.site.register(Section, inlines=[ArticleInline]) 80 95 admin.site.register(ModelWithStringPrimaryKey) 96 admin.site.register(Color) 97 admin.site.register(Thing, ThingAdmin) django/trunk/tests/regressiontests/admin_views/tests.py
r9211 r9241 13 13 14 14 class AdminViewBasicTest(TestCase): 15 fixtures = ['admin-views-users.xml' ]15 fixtures = ['admin-views-users.xml', 'admin-views-colors.xml'] 16 16 17 17 def setUp(self): … … 148 148 "Results of sorting on ModelAdmin method are out of order." 149 149 ) 150 151 def testLimitedFilter(self): 152 """Ensure admin changelist filters do not contain objects excluded via limit_choices_to.""" 153 response = self.client.get('/test_admin/admin/admin_views/thing/') 154 self.failUnlessEqual(response.status_code, 200) 155 self.failUnless( 156 '<div id="changelist-filter">' in response.content, 157 "Expected filter not found in changelist view." 158 ) 159 self.failIf( 160 '<a href="?color__id__exact=3">Blue</a>' in response.content, 161 "Changelist filter not correctly limited by limit_choices_to." 162 ) 150 163 151 164 def get_perm(Model, perm):
