mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #35301 -- Fixed Options._property_names for overriden properties.
Regression in faeb92ea13
.
This commit is contained in:
parent
b07e2d57a0
commit
7646b9023d
@ -969,12 +969,14 @@ class Options:
|
||||
def _property_names(self):
|
||||
"""Return a set of the names of the properties defined on the model."""
|
||||
names = set()
|
||||
seen = set()
|
||||
for klass in self.model.__mro__:
|
||||
names |= {
|
||||
name
|
||||
for name, value in klass.__dict__.items()
|
||||
if isinstance(value, property)
|
||||
if isinstance(value, property) and name not in seen
|
||||
}
|
||||
seen |= set(klass.__dict__)
|
||||
return frozenset(names)
|
||||
|
||||
@cached_property
|
||||
|
@ -1343,6 +1343,17 @@ class OtherModelTests(SimpleTestCase):
|
||||
],
|
||||
)
|
||||
|
||||
def test_inherited_overriden_property_no_clash(self):
|
||||
class Cheese:
|
||||
@property
|
||||
def filling_id(self):
|
||||
pass
|
||||
|
||||
class Sandwich(Cheese, models.Model):
|
||||
filling = models.ForeignKey("self", models.CASCADE)
|
||||
|
||||
self.assertEqual(Sandwich.check(), [])
|
||||
|
||||
def test_single_primary_key(self):
|
||||
class Model(models.Model):
|
||||
foo = models.IntegerField(primary_key=True)
|
||||
|
Loading…
Reference in New Issue
Block a user