Author: brosner Date: 2009-03-29 13:52:38 -0500 (Sun, 29 Mar 2009) New Revision: 10178
Modified: django/trunk/django/contrib/admin/templatetags/admin_list.py django/trunk/tests/regressiontests/admin_views/models.py django/trunk/tests/regressiontests/admin_views/tests.py Log: Fixed #10622 -- Resolved an issue with model inheritence and list_editable. Thanks oyvind and Alex Gaynor. Modified: django/trunk/django/contrib/admin/templatetags/admin_list.py =================================================================== --- django/trunk/django/contrib/admin/templatetags/admin_list.py 2009-03-28 16:36:48 UTC (rev 10177) +++ django/trunk/django/contrib/admin/templatetags/admin_list.py 2009-03-29 18:52:38 UTC (rev 10178) @@ -70,7 +70,7 @@ def result_headers(cl): lookup_opts = cl.lookup_opts - + for i, field_name in enumerate(cl.list_display): attr = None try: @@ -97,7 +97,7 @@ raise AttributeError, \ "'%s' model or '%s' objects have no attribute '%s'" % \ (lookup_opts.object_name, cl.model_admin.__class__, field_name) - + try: header = attr.short_description except AttributeError: @@ -237,7 +237,7 @@ result_repr = conditional_escape(result_repr) yield mark_safe(u'<td%s>%s</td>' % (row_class, result_repr)) if form: - yield mark_safe(force_unicode(form[cl.model._meta.pk.attname])) + yield mark_safe(force_unicode(form[cl.model._meta.pk.name])) def results(cl): if cl.formset: Modified: django/trunk/tests/regressiontests/admin_views/models.py =================================================================== --- django/trunk/tests/regressiontests/admin_views/models.py 2009-03-28 16:36:48 UTC (rev 10177) +++ django/trunk/tests/regressiontests/admin_views/models.py 2009-03-29 18:52:38 UTC (rev 10178) @@ -143,10 +143,10 @@ name = models.CharField(max_length=100) gender = models.IntegerField(choices=GENDER_CHOICES) alive = models.BooleanField() - + def __unicode__(self): return self.name - + class Meta: ordering = ["id"] @@ -236,6 +236,18 @@ class ExternalSubscriberAdmin(admin.ModelAdmin): actions = [external_mail, redirect_to] +class Media(models.Model): + name = models.CharField(max_length=60) + +class Podcast(Media): + release_date = models.DateField() + +class PodcastAdmin(admin.ModelAdmin): + list_display = ('name', 'release_date') + list_editable = ('release_date',) + + ordering = ('name',) + admin.site.register(Article, ArticleAdmin) admin.site.register(CustomArticle, CustomArticleAdmin) admin.site.register(Section, inlines=[ArticleInline]) @@ -246,6 +258,7 @@ admin.site.register(Persona, PersonaAdmin) admin.site.register(Subscriber, SubscriberAdmin) admin.site.register(ExternalSubscriber, ExternalSubscriberAdmin) +admin.site.register(Podcast, PodcastAdmin) # We intentionally register Promo and ChapterXtra1 but not Chapter nor ChapterXtra2. # That way we cover all four cases: @@ -259,5 +272,3 @@ admin.site.register(Book, inlines=[ChapterInline]) admin.site.register(Promo) admin.site.register(ChapterXtra1) - - Modified: django/trunk/tests/regressiontests/admin_views/tests.py =================================================================== --- django/trunk/tests/regressiontests/admin_views/tests.py 2009-03-28 16:36:48 UTC (rev 10177) +++ django/trunk/tests/regressiontests/admin_views/tests.py 2009-03-29 18:52:38 UTC (rev 10178) @@ -1,6 +1,7 @@ # coding: utf-8 import re +import datetime from django.test import TestCase from django.contrib.auth.models import User, Permission @@ -12,7 +13,7 @@ from django.utils.html import escape # local test models -from models import Article, CustomArticle, Section, ModelWithStringPrimaryKey, Person, Persona, FooAccount, BarAccount, Subscriber, ExternalSubscriber +from models import Article, CustomArticle, Section, ModelWithStringPrimaryKey, Person, Persona, FooAccount, BarAccount, Subscriber, ExternalSubscriber, Podcast try: set @@ -740,6 +741,12 @@ def tearDown(self): self.client.logout() + def test_inheritance(self): + Podcast.objects.create(name="This Week in Django", + release_date=datetime.date.today()) + response = self.client.get('/test_admin/admin/admin_views/podcast/') + self.failUnlessEqual(response.status_code, 200) + def test_changelist_input_html(self): response = self.client.get('/test_admin/admin/admin_views/person/') # 2 inputs per object(the field and the hidden id field) = 6 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-updates?hl=en -~----------~----~----~----~------~----~------~--~---