Skip to content

Commit 74e4e1a

Browse files
author
Jacob Foster
committed
Drop reverse flag, remove duplicates in get_model_fields
1 parent ca06d74 commit 74e4e1a

File tree

2 files changed

+10
-17
lines changed

2 files changed

+10
-17
lines changed

graphene_django/tests/test_utils.py

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,7 @@
1-
2-
3-
from ..utils import get_model_fields, get_reverse_fields
1+
from ..utils import get_model_fields
42
from .models import Film, Reporter
53

64

7-
def test_get_reverse_fields_correct():
8-
reporter_reverse_fields = get_reverse_fields(Reporter)
9-
reporter_field_names = [field[0] for field in reporter_reverse_fields]
10-
assert sorted(reporter_field_names) == [
11-
'articles', 'films'
12-
]
13-
14-
film_reverse_fields = get_reverse_fields(Film)
15-
film_field_names = [field[0] for field in film_reverse_fields]
16-
assert film_field_names == ['details']
17-
18-
195
def test_get_model_fields_no_duplication():
206
reporter_fields = get_model_fields(Reporter)
217
reporter_name_set = set([field[0] for field in reporter_fields])

graphene_django/utils.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def get_reverse_fields(model):
3333
yield (name, new_related)
3434
elif isinstance(related, models.ManyToOneRel):
3535
yield (name, related)
36-
elif isinstance(related, models.ManyToManyRel) and attr.reverse and not related.symmetrical:
36+
elif isinstance(related, models.ManyToManyRel) and not related.symmetrical:
3737
yield (name, related)
3838

3939

@@ -52,7 +52,14 @@ def get_model_fields(model):
5252
list(model._meta.local_many_to_many))
5353
]
5454

55-
all_fields += list(reverse_fields)
55+
# Make sure we don't duplicate local fields with "reverse" version
56+
all_field_names = [field[0] for field in all_fields]
57+
actual_reverse_fields = [
58+
reverse_field for reverse_field in reverse_fields
59+
if reverse_field[0] not in all_field_names
60+
]
61+
62+
all_fields += list(actual_reverse_fields)
5663

5764
return all_fields
5865

0 commit comments

Comments
 (0)