diff options
| author | Carlton Gibson <carlton.gibson@noumenal.es> | 2020-01-07 11:52:09 +0100 |
|---|---|---|
| committer | Carlton Gibson <carlton@noumenal.es> | 2020-01-15 15:35:22 +0100 |
| commit | 29c126bb349526b5f1cd78facbe9f25906f18563 (patch) | |
| tree | 1619db156a90607b54bce848c676867a67c86646 /django | |
| parent | d202846ced2f58d7a34ad80bfe2bde8a542a70b9 (diff) | |
Fixed #31124 -- Fixed setting of get_FOO_display() when overriding inherited choices.
Regression in 2d38eb0ab9f78d68c083a5b78b1eca39027b279a
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/fields/__init__.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 1a55d3d417..6bd95f542c 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -764,7 +764,11 @@ class Field(RegisterLookupMixin): if not getattr(cls, self.attname, None): setattr(cls, self.attname, self.descriptor_class(self)) if self.choices is not None: - if not hasattr(cls, 'get_%s_display' % self.name): + # Don't override a get_FOO_display() method defined explicitly on + # this class, but don't check methods derived from inheritance, to + # allow overriding inherited choices. For more complex inheritance + # structures users should override contribute_to_class(). + if 'get_%s_display' % self.name not in cls.__dict__: setattr( cls, 'get_%s_display' % self.name, |
