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 import models
4
4
5
5
6
6
class BlogSerializer (serializers .ModelSerializer ):
@@ -12,11 +12,11 @@ def get_copyright(self, obj):
12
12
13
13
def get_root_meta (self , obj ):
14
14
return {
15
- 'api_docs' : '/docs/api/blogs'
15
+ 'api_docs' : '/docs/api/blogs'
16
16
}
17
17
18
18
class Meta :
19
- model = Blog
19
+ model = models . Blog
20
20
fields = ('name' , )
21
21
meta_fields = ('copyright' ,)
22
22
@@ -38,18 +38,18 @@ def __init__(self, *args, **kwargs):
38
38
39
39
body_format = serializers .SerializerMethodField ()
40
40
comments = relations .ResourceRelatedField (
41
- source = 'comment_set' , many = True , read_only = True )
41
+ source = 'comment_set' , many = True , read_only = True )
42
42
suggested = relations .SerializerMethodResourceRelatedField (
43
- source = 'get_suggested' , model = Entry , read_only = True )
43
+ source = 'get_suggested' , model = models . Entry , read_only = True )
44
44
45
45
def get_suggested (self , obj ):
46
- return Entry .objects .exclude (pk = obj .pk ).first ()
46
+ return models . Entry .objects .exclude (pk = obj .pk ).first ()
47
47
48
48
def get_body_format (self , obj ):
49
49
return 'text'
50
50
51
51
class Meta :
52
- model = Entry
52
+ model = models . Entry
53
53
fields = ('blog' , 'headline' , 'body_text' , 'pub_date' , 'mod_date' ,
54
54
'authors' , 'comments' , 'suggested' ,)
55
55
meta_fields = ('body_format' ,)
@@ -58,7 +58,7 @@ class Meta:
58
58
class AuthorBioSerializer (serializers .ModelSerializer ):
59
59
60
60
class Meta :
61
- model = AuthorBio
61
+ model = models . AuthorBio
62
62
fields = ('author' , 'body' ,)
63
63
64
64
@@ -68,13 +68,52 @@ class AuthorSerializer(serializers.ModelSerializer):
68
68
}
69
69
70
70
class Meta :
71
- model = Author
71
+ model = models . Author
72
72
fields = ('name' , 'email' , 'bio' )
73
73
74
74
75
75
class CommentSerializer (serializers .ModelSerializer ):
76
76
77
77
class Meta :
78
- model = Comment
78
+ model = models . Comment
79
79
exclude = ('created_at' , 'modified_at' ,)
80
80
# fields = ('entry', 'body', 'author',)
81
+
82
+
83
+ class ArtProjectSerializer (serializers .ModelSerializer ):
84
+ class Meta :
85
+ model = models .ArtProject
86
+ exclude = ('polymorphic_ctype' ,)
87
+
88
+
89
+ class ResearchProjectSerializer (serializers .ModelSerializer ):
90
+ class Meta :
91
+ model = models .ResearchProject
92
+ exclude = ('polymorphic_ctype' ,)
93
+
94
+
95
+ class ProjectSerializer (serializers .ModelSerializer ):
96
+
97
+ class Meta :
98
+ model = models .Project
99
+ exclude = ('polymorphic_ctype' ,)
100
+
101
+ def to_representation (self , instance ):
102
+ # Handle polymorphism
103
+ if isinstance (instance , models .ArtProject ):
104
+ return ArtProjectSerializer (
105
+ instance , context = self .context ).to_representation (instance )
106
+ elif isinstance (instance , models .ResearchProject ):
107
+ return ResearchProjectSerializer (
108
+ instance , context = self .context ).to_representation (instance )
109
+ return super (ProjectSerializer , self ).to_representation (instance )
110
+
111
+
112
+ class CompanySerializer (serializers .ModelSerializer ):
113
+ included_serializers = {
114
+ 'current_project' : ProjectSerializer ,
115
+ 'future_projects' : ProjectSerializer ,
116
+ }
117
+
118
+ class Meta :
119
+ model = models .Company
0 commit comments