Reorganize for clarity

This commit is contained in:
Jacob Foster 2017-05-25 11:15:13 -05:00
parent 74e4e1aa77
commit 95510987f1

View File

@ -21,8 +21,12 @@ except (ImportError, AttributeError):
DJANGO_FILTER_INSTALLED = False
def get_reverse_fields(model):
def get_reverse_fields(model, local_field_names):
for name, attr in model.__dict__.items():
# Don't duplicate any local fields
if name in local_field_names:
continue
# Django =>1.9 uses 'rel', django <1.9 uses 'related'
related = getattr(attr, 'rel', None) or \
getattr(attr, 'related', None)
@ -44,8 +48,7 @@ def maybe_queryset(value):
def get_model_fields(model):
reverse_fields = get_reverse_fields(model)
all_fields = [
local_fields = [
(field.name, field)
for field
in sorted(list(model._meta.fields) +
@ -53,13 +56,10 @@ def get_model_fields(model):
]
# Make sure we don't duplicate local fields with "reverse" version
all_field_names = [field[0] for field in all_fields]
actual_reverse_fields = [
reverse_field for reverse_field in reverse_fields
if reverse_field[0] not in all_field_names
]
local_field_names = [field[0] for field in local_fields]
reverse_fields = get_reverse_fields(model, local_field_names)
all_fields += list(actual_reverse_fields)
all_fields = local_fields + list(reverse_fields)
return all_fields