File tree Expand file tree Collapse file tree 2 files changed +10
-17
lines changed
Expand file tree Collapse file tree 2 files changed +10
-17
lines changed Original file line number Diff line number Diff line change 1-
2-
3- from ..utils import get_model_fields , get_reverse_fields
1+ from ..utils import get_model_fields
42from .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-
195def 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 ])
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments