mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-04 04:20:12 +03:00
Extract modern code from get_names_and_managers in compat.py and remove compat code
This commit is contained in:
parent
a032c0c320
commit
3a43224fed
|
@ -78,25 +78,6 @@ def distinct(queryset, base):
|
|||
return queryset.distinct()
|
||||
|
||||
|
||||
# TODO: Remove
|
||||
# Obtaining manager instances and names from model options differs after 1.10.
|
||||
def get_names_and_managers(options):
|
||||
if django.VERSION >= (1, 10):
|
||||
# Django 1.10 onwards provides a `.managers` property on the Options.
|
||||
return [
|
||||
(manager.name, manager)
|
||||
for manager
|
||||
in options.managers
|
||||
]
|
||||
# For Django 1.8 and 1.9, use the three-tuple information provided
|
||||
# by .concrete_managers and .abstract_managers
|
||||
return [
|
||||
(manager_info[1], manager_info[2])
|
||||
for manager_info
|
||||
in (options.concrete_managers + options.abstract_managers)
|
||||
]
|
||||
|
||||
|
||||
# TODO: Remove
|
||||
# field.rel is deprecated from 1.9 onwards
|
||||
def get_remote_field(field, **kwargs):
|
||||
|
|
|
@ -10,13 +10,18 @@ from django.db import models
|
|||
from django.utils.encoding import force_text
|
||||
from django.utils.functional import Promise
|
||||
|
||||
from rest_framework.compat import get_names_and_managers, unicode_repr
|
||||
from rest_framework.compat import unicode_repr
|
||||
|
||||
|
||||
def manager_repr(value):
|
||||
model = value.model
|
||||
opts = model._meta
|
||||
for manager_name, manager_instance in get_names_and_managers(opts):
|
||||
names_and_managers = [
|
||||
(manager.name, manager)
|
||||
for manager
|
||||
in opts.managers
|
||||
]
|
||||
for manager_name, manager_instance in names_and_managers:
|
||||
if manager_instance == value:
|
||||
return '%s.%s.all()' % (model._meta.object_name, manager_name)
|
||||
return repr(value)
|
||||
|
|
Loading…
Reference in New Issue
Block a user