mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-04 12:30:11 +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()
|
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
|
# TODO: Remove
|
||||||
# field.rel is deprecated from 1.9 onwards
|
# field.rel is deprecated from 1.9 onwards
|
||||||
def get_remote_field(field, **kwargs):
|
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.encoding import force_text
|
||||||
from django.utils.functional import Promise
|
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):
|
def manager_repr(value):
|
||||||
model = value.model
|
model = value.model
|
||||||
opts = model._meta
|
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:
|
if manager_instance == value:
|
||||||
return '%s.%s.all()' % (model._meta.object_name, manager_name)
|
return '%s.%s.all()' % (model._meta.object_name, manager_name)
|
||||||
return repr(value)
|
return repr(value)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user