From 50de13343b9daa9da30b9111dab2e15d8f24465d Mon Sep 17 00:00:00 2001 From: Jacob Kaplan-Moss Date: Sat, 7 Jun 2008 20:01:18 +0000 Subject: [PATCH] Fixed #7342: Ignore any Meta options starting with '_', thus making it OK for Meta to be a newstyle class. Thanks, Gulopine. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7585 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/options.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/django/db/models/options.py b/django/db/models/options.py index 5802ead081..4036bfb36e 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -56,8 +56,12 @@ class Options(object): # Next, apply any overridden values from 'class Meta'. if self.meta: meta_attrs = self.meta.__dict__.copy() - del meta_attrs['__module__'] - del meta_attrs['__doc__'] + for name in self.meta.__dict__: + # Ignore any private attributes that Django doesn't care about. + # NOTE: We can't modify a dictionary's contents while looping + # over it, so we loop over the *original* dictionary instead. + if name.startswith('_'): + del meta_attrs[name] for attr_name in DEFAULT_NAMES: if attr_name in meta_attrs: setattr(self, attr_name, meta_attrs.pop(attr_name))