From 83e00a237158f7961b06abd31c2ed867f1831c3f Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Fri, 22 Feb 2008 04:58:53 +0000 Subject: [PATCH] queryset-refactor: Whilst writing a test to bullet-proof [7141], a bug showed up. git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@7143 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/options.py | 5 ++++- tests/modeltests/model_inheritance/models.py | 10 ++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/django/db/models/options.py b/django/db/models/options.py index 7fa7fe0174..0796a3f7c9 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -59,7 +59,10 @@ class Options(object): del meta_attrs['__module__'] del meta_attrs['__doc__'] for attr_name in DEFAULT_NAMES: - setattr(self, attr_name, meta_attrs.pop(attr_name, getattr(self, attr_name))) + if attr_name in meta_attrs: + setattr(self, attr_name, meta_attrs.pop(attr_name)) + elif hasattr(self.meta, attr_name): + setattr(self, attr_name, getattr(self.meta, attr_name)) # unique_together can be either a tuple of tuples, or a single # tuple of two strings. Normalize it to a tuple of tuples, so that diff --git a/tests/modeltests/model_inheritance/models.py b/tests/modeltests/model_inheritance/models.py index df0fb77ccb..95ff4b55f2 100644 --- a/tests/modeltests/model_inheritance/models.py +++ b/tests/modeltests/model_inheritance/models.py @@ -46,11 +46,15 @@ class Rating(models.Model): class Meta: abstract = True + ordering = ['-rating'] class Restaurant(Place, Rating): serves_hot_dogs = models.BooleanField() serves_pizza = models.BooleanField() + class Meta(Rating.Meta): + db_table = 'my_restaurant' + def __unicode__(self): return u"%s the restaurant" % self.name @@ -124,7 +128,7 @@ Test constructor for Restaurant. >>> r.save() # Test the constructor for ItalianRestaurant. ->>> ir = ItalianRestaurant(name='Ristorante Miron', address='1234 W. Elm', serves_hot_dogs=False, serves_pizza=False, serves_gnocchi=True) +>>> ir = ItalianRestaurant(name='Ristorante Miron', address='1234 W. Elm', serves_hot_dogs=False, serves_pizza=False, serves_gnocchi=True, rating=4) >>> ir.save() # Make sure Restaurant and ItalianRestaurant have the right fields in the right @@ -133,6 +137,8 @@ Test constructor for Restaurant. ['id', 'name', 'address', 'place_ptr', 'rating', 'serves_hot_dogs', 'serves_pizza'] >>> [f.name for f in ItalianRestaurant._meta.fields] ['id', 'name', 'address', 'place_ptr', 'rating', 'serves_hot_dogs', 'serves_pizza', 'restaurant_ptr', 'serves_gnocchi'] +>>> Restaurant._meta.ordering +['-rating'] # Even though p.supplier for a Place 'p' (a parent of a Supplier), a Restaurant # object cannot access that reverse relation, since it's not part of the @@ -198,7 +204,7 @@ DoesNotExist: Restaurant matching query does not exist. [, ] >>> Restaurant.objects.filter(provider__name__contains="Chickens") -[, ] +[, ] >>> ItalianRestaurant.objects.filter(provider__name__contains="Chickens") []