mirror of
https://github.com/django/django.git
synced 2025-10-03 23:34:47 +00:00
Fixed #27073 -- Removed duplicated managers in Model._meta.managers
.
This commit is contained in:
parent
8cd900c819
commit
d4eefc7e2a
3 changed files with 24 additions and 1 deletions
|
@ -369,11 +369,16 @@ class Options(object):
|
|||
@cached_property
|
||||
def managers(self):
|
||||
managers = []
|
||||
seen_managers = set()
|
||||
bases = (b for b in self.model.mro() if hasattr(b, '_meta'))
|
||||
for depth, base in enumerate(bases):
|
||||
for manager in base._meta.local_managers:
|
||||
if manager.name in seen_managers:
|
||||
continue
|
||||
|
||||
manager = copy.copy(manager)
|
||||
manager.model = self.model
|
||||
seen_managers.add(manager.name)
|
||||
managers.append((depth, manager.creation_counter, manager))
|
||||
|
||||
# Used for deprecation of legacy manager inheritance,
|
||||
|
@ -387,7 +392,7 @@ class Options(object):
|
|||
|
||||
@cached_property
|
||||
def managers_map(self):
|
||||
return {manager.name: manager for manager in reversed(self.managers)}
|
||||
return {manager.name: manager for manager in self.managers}
|
||||
|
||||
@cached_property
|
||||
def base_manager(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue