From 95510987f177d24ae6f79956ef1a6fa64319a783 Mon Sep 17 00:00:00 2001 From: Jacob Foster Date: Thu, 25 May 2017 11:15:13 -0500 Subject: [PATCH] Reorganize for clarity --- graphene_django/utils.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/graphene_django/utils.py b/graphene_django/utils.py index 677a206..3ea4d0d 100644 --- a/graphene_django/utils.py +++ b/graphene_django/utils.py @@ -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