1+ from rest_framework import serializers
2+ from drf_writable_nested .serializers import WritableNestedModelSerializer
3+ from .models import Avatar , AccessKey , Profile , User , Site
4+
5+ class AvatarSerializer (serializers .ModelSerializer ):
6+ image = serializers .CharField ()
7+
8+ class Meta :
9+ model = Avatar
10+ fields = ('pk' , 'image' ,)
11+
12+
13+ class SiteSerializer (serializers .ModelSerializer ):
14+ url = serializers .CharField ()
15+
16+ class Meta :
17+ model = Site
18+ fields = ('pk' , 'url' ,)
19+
20+
21+ class AccessKeySerializer (serializers .ModelSerializer ):
22+
23+ class Meta :
24+ model = AccessKey
25+ fields = ('pk' , 'key' ,)
26+
27+
28+ class ProfileSerializer (WritableNestedModelSerializer ):
29+ # Direct ManyToMany relation
30+ sites = SiteSerializer (many = True )
31+
32+ # Reverse FK relation
33+ avatars = AvatarSerializer (many = True )
34+
35+ # Direct FK relation
36+ access_key = AccessKeySerializer (allow_null = True )
37+
38+ class Meta :
39+ model = Profile
40+ fields = ('pk' , 'sites' , 'avatars' , 'access_key' ,)
41+
42+
43+ class UserSerializer (WritableNestedModelSerializer ):
44+ # Reverse OneToOne relation
45+ profile = ProfileSerializer ()
46+
47+ class Meta :
48+ model = User
49+ fields = ('pk' , 'profile' , 'username' ,)
0 commit comments