1
1
from datetime import datetime
2
2
from rest_framework_json_api import serializers , relations
3
- from example .models import Blog , Entry , Author , AuthorBio , Comment
3
+ from example .models import Blog , Entry , Author , AuthorBio , Comment , TaggedItem
4
+
5
+
6
+ class TaggedItemSerializer (serializers .ModelSerializer ):
7
+
8
+ class Meta :
9
+ model = TaggedItem
10
+ fields = ('tag' , )
4
11
5
12
6
13
class BlogSerializer (serializers .ModelSerializer ):
7
14
8
15
copyright = serializers .SerializerMethodField ()
16
+ tags = TaggedItemSerializer (many = True , read_only = True )
17
+
18
+ include_serializers = {
19
+ 'tags' : 'example.serializers.TaggedItemSerializer' ,
20
+ }
9
21
10
22
def get_copyright (self , resource ):
11
23
return datetime .now ().year
@@ -17,7 +29,8 @@ def get_root_meta(self, resource, many):
17
29
18
30
class Meta :
19
31
model = Blog
20
- fields = ('name' , 'url' ,)
32
+ fields = ('name' , 'url' , 'tags' )
33
+ read_only_fields = ('tags' , )
21
34
meta_fields = ('copyright' ,)
22
35
23
36
@@ -36,6 +49,7 @@ def __init__(self, *args, **kwargs):
36
49
'comments' : 'example.serializers.CommentSerializer' ,
37
50
'featured' : 'example.serializers.EntrySerializer' ,
38
51
'suggested' : 'example.serializers.EntrySerializer' ,
52
+ 'tags' : 'example.serializers.TaggedItemSerializer' ,
39
53
}
40
54
41
55
body_format = serializers .SerializerMethodField ()
@@ -52,6 +66,7 @@ def __init__(self, *args, **kwargs):
52
66
# single related from serializer
53
67
featured = relations .SerializerMethodResourceRelatedField (
54
68
source = 'get_featured' , model = Entry , read_only = True )
69
+ tags = TaggedItemSerializer (many = True , read_only = True )
55
70
56
71
def get_suggested (self , obj ):
57
72
return Entry .objects .exclude (pk = obj .pk )
@@ -65,7 +80,8 @@ def get_body_format(self, obj):
65
80
class Meta :
66
81
model = Entry
67
82
fields = ('blog' , 'headline' , 'body_text' , 'pub_date' , 'mod_date' ,
68
- 'authors' , 'comments' , 'featured' , 'suggested' ,)
83
+ 'authors' , 'comments' , 'featured' , 'suggested' , 'tags' )
84
+ read_only_fields = ('tags' , )
69
85
meta_fields = ('body_format' ,)
70
86
71
87
class JSONAPIMeta :
0 commit comments