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
4
2
from .models import Film , Reporter
5
3
6
4
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
-
19
5
def test_get_model_fields_no_duplication ():
20
6
reporter_fields = get_model_fields (Reporter )
21
7
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):
33
33
yield (name , new_related )
34
34
elif isinstance (related , models .ManyToOneRel ):
35
35
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 :
37
37
yield (name , related )
38
38
39
39
@@ -52,7 +52,14 @@ def get_model_fields(model):
52
52
list (model ._meta .local_many_to_many ))
53
53
]
54
54
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 )
56
63
57
64
return all_fields
58
65
You can’t perform that action at this time.
0 commit comments