From ed244199c72f5bbf33ab4547e06e69873d7271d0 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sun, 4 Jun 2017 22:58:24 +0100 Subject: Fixed #28269 -- Fixed Model.__init__() crash on models with a field that has an instance only descriptor. Regression in d2a26c1a90e837777dabdf3d67ceec4d2a70fb86. --- django/db/models/options.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'django') diff --git a/django/db/models/options.py b/django/db/models/options.py index 82d96b739c..90462278d9 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -1,4 +1,5 @@ import copy +import inspect import warnings from bisect import bisect from collections import OrderedDict, defaultdict @@ -829,7 +830,9 @@ class Options: @cached_property def _property_names(self): """Return a set of the names of the properties defined on the model.""" - return frozenset({ - attr for attr in - dir(self.model) if isinstance(getattr(self.model, attr), property) - }) + names = [] + for name in dir(self.model): + attr = inspect.getattr_static(self.model, name) + if isinstance(attr, property): + names.append(name) + return frozenset(names) -- cgit v1.3