mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-07 22:04:48 +03:00
Get model managers and names in a version-compatible manner.
This commit is contained in:
parent
9c83ff44a5
commit
96aaa24e9b
|
@ -58,6 +58,19 @@ def distinct(queryset, base):
|
||||||
return queryset.distinct()
|
return queryset.distinct()
|
||||||
|
|
||||||
|
|
||||||
|
def get_names_and_managers(options):
|
||||||
|
if django.VERSION >= (1, 10):
|
||||||
|
return [
|
||||||
|
(manager.name, manager)
|
||||||
|
for manager
|
||||||
|
in options.managers
|
||||||
|
]
|
||||||
|
return [
|
||||||
|
(manager_info[1], manager_info[2])
|
||||||
|
for manager_info
|
||||||
|
in (options.concrete_managers + options.abstract_managers)
|
||||||
|
]
|
||||||
|
|
||||||
# contrib.postgres only supported from 1.8 onwards.
|
# contrib.postgres only supported from 1.8 onwards.
|
||||||
try:
|
try:
|
||||||
from django.contrib.postgres import fields as postgres_fields
|
from django.contrib.postgres import fields as postgres_fields
|
||||||
|
|
|
@ -10,15 +10,15 @@ 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 unicode_repr
|
from rest_framework.compat import get_names_and_managers, unicode_repr
|
||||||
|
|
||||||
|
|
||||||
def manager_repr(value):
|
def manager_repr(value):
|
||||||
model = value.model
|
model = value.model
|
||||||
opts = model._meta
|
opts = model._meta
|
||||||
for _, name, manager in opts.concrete_managers + opts.abstract_managers:
|
for manager_name, manager_instance in get_names_and_managers(opts):
|
||||||
if manager == value:
|
if manager_instance == value:
|
||||||
return '%s.%s.all()' % (model._meta.object_name, 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