mirror of
https://github.com/django/django.git
synced 2025-10-04 07:46:37 +00:00
Changed internal storing of abstract and concrete managers to be in a single list.
This commit prepares the internal manager layout to be serialized by migrations; refs #23822.
This commit is contained in:
parent
7c1f3901bc
commit
e37ab311fc
3 changed files with 27 additions and 15 deletions
|
@ -88,9 +88,10 @@ class Options(object):
|
|||
self.auto_created = False
|
||||
|
||||
# To handle various inheritance situations, we need to track where
|
||||
# managers came from (concrete or abstract base classes).
|
||||
self.abstract_managers = []
|
||||
self.concrete_managers = []
|
||||
# managers came from (concrete or abstract base classes). `managers`
|
||||
# keeps a list of 3-tuples of the form:
|
||||
# (creation_counter, instance, abstract(=True))
|
||||
self.managers = []
|
||||
|
||||
# List of all lookups defined in ForeignKey 'limit_choices_to' options
|
||||
# from *other* models. Needed for some admin checks. Internal use only.
|
||||
|
@ -110,6 +111,20 @@ class Options(object):
|
|||
def installed(self):
|
||||
return self.app_config is not None
|
||||
|
||||
@property
|
||||
def abstract_managers(self):
|
||||
return [
|
||||
(counter, instance.name, instance) for counter, instance, abstract
|
||||
in self.managers if abstract
|
||||
]
|
||||
|
||||
@property
|
||||
def concrete_managers(self):
|
||||
return [
|
||||
(counter, instance.name, instance) for counter, instance, abstract
|
||||
in self.managers if not abstract
|
||||
]
|
||||
|
||||
def contribute_to_class(self, cls, name):
|
||||
from django.db import connection
|
||||
from django.db.backends.utils import truncate_name
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue