File tree 5 files changed +24
-5
lines changed
5 files changed +24
-5
lines changed Original file line number Diff line number Diff line change @@ -4,4 +4,5 @@ Greg Aker <greg@gregaker.net>
4
4
Jerel Unruh <mail@unruhdesigns.com>
5
5
Matt Layman <http://www.mattlayman.com>
6
6
Oliver Sauder <os@esite.ch>
7
+ Raphael Cohen <raphael.cohen.utt@gmail.com>
7
8
Yaniv Peer <yanivpeer@gmail.com>
Original file line number Diff line number Diff line change @@ -64,7 +64,7 @@ class Entry(BaseModel):
64
64
body_text = models .TextField (null = True )
65
65
pub_date = models .DateField (null = True )
66
66
mod_date = models .DateField (null = True )
67
- authors = models .ManyToManyField (Author )
67
+ authors = models .ManyToManyField (Author , related_name = 'entries' )
68
68
n_comments = models .IntegerField (default = 0 )
69
69
n_pingbacks = models .IntegerField (default = 0 )
70
70
rating = models .IntegerField (default = 0 )
Original file line number Diff line number Diff line change @@ -92,7 +92,7 @@ class AuthorBioSerializer(serializers.ModelSerializer):
92
92
93
93
class Meta :
94
94
model = AuthorBio
95
- fields = ('author' , 'body' , )
95
+ fields = ('author' , 'body' )
96
96
97
97
98
98
class AuthorSerializer (serializers .ModelSerializer ):
@@ -102,7 +102,7 @@ class AuthorSerializer(serializers.ModelSerializer):
102
102
103
103
class Meta :
104
104
model = Author
105
- fields = ('name' , 'email' , 'bio' )
105
+ fields = ('name' , 'email' , 'bio' , 'entries' )
106
106
107
107
108
108
class CommentSerializer (serializers .ModelSerializer ):
Original file line number Diff line number Diff line change 3
3
"""
4
4
from rest_framework_json_api import utils
5
5
6
- from ..serializers import EntrySerializer
6
+ from ..serializers import EntrySerializer , AuthorSerializer
7
7
from ..tests import TestBase
8
8
9
9
@@ -29,3 +29,12 @@ def test_m2m_relation(self):
29
29
field = serializer .fields ['authors' ]
30
30
31
31
self .assertEqual (utils .get_related_resource_type (field ), 'authors' )
32
+
33
+ def test_m2m_reverse_relation (self ):
34
+ """
35
+ Ensure reverse m2ms have their types identified correctly.
36
+ """
37
+ serializer = AuthorSerializer ()
38
+ field = serializer .fields ['entries' ]
39
+
40
+ self .assertEqual (utils .get_related_resource_type (field ), 'entries' )
Original file line number Diff line number Diff line change @@ -237,7 +237,16 @@ def get_related_resource_type(relation):
237
237
else :
238
238
relation_model = parent_model_relation .related .model
239
239
elif parent_model_relation_type is ManyToManyDescriptor :
240
- relation_model = parent_model_relation .field .remote_field .model
240
+ if django .VERSION >= (1 , 9 ):
241
+ relation_model = parent_model_relation .field .remote_field .model
242
+ # In case we are in a reverse relation
243
+ if relation_model == parent_model :
244
+ relation_model = parent_model_relation .field .model
245
+ elif django .VERSION >= (1 , 8 ):
246
+ relation_model = parent_model_relation .related .model
247
+ # In case we are in a reverse relation
248
+ if relation_model == parent_model :
249
+ relation_model = parent_model_relation .related .related_model
241
250
elif parent_model_relation_type is ReverseManyRelatedObjectsDescriptor :
242
251
relation_model = parent_model_relation .field .related .model
243
252
elif parent_model_relation_type is ReverseGenericManyToOneDescriptor :
You can’t perform that action at this time.
0 commit comments