File tree Expand file tree Collapse file tree 3 files changed +44
-2
lines changed
Expand file tree Collapse file tree 3 files changed +44
-2
lines changed Original file line number Diff line number Diff line change @@ -80,7 +80,7 @@ def prepare_objects(self, objs):
8080 def _serialize_object (self , obj ):
8181 serialized = self .serialize_object (obj )
8282 for extra in self .extra .values ():
83- serialized .update (extra .serialize_object (obj ))
83+ serialized .update (extra ._serialize_object (obj ))
8484 return serialized
8585
8686 def serialize_object (self , obj ):
Original file line number Diff line number Diff line change @@ -89,3 +89,45 @@ def serialize_object(self, obj):
8989
9090 with django_assert_num_queries (0 ):
9191 assert expected == next (serialize ([bus ]))
92+
93+
94+ def test_extras_recursive (bus_fixture , db , django_assert_num_queries ):
95+ def city (obj ):
96+ return {
97+ 'city' : 'SJK' ,
98+ }
99+
100+ class Attr (BaseSerializer ):
101+ extra = {
102+ 'city' : city ,
103+ }
104+ select_related = ['company' ]
105+
106+ def serialize_object (self , obj ):
107+ return {
108+ 'myattr' : obj .company .name
109+ }
110+
111+ class S (BaseSerializer ):
112+ extra = {
113+ 'myattr' : Attr (extra = ['city' ]),
114+ }
115+
116+ def serialize_object (self , obj ):
117+ return {
118+ 'plate' : obj .plate ,
119+ }
120+
121+ serializer = S (extra = ['myattr' ])
122+
123+ with django_assert_num_queries (1 ):
124+ bus = Bus .objects .to_serialize (serializer ).first ()
125+
126+ expected = {
127+ 'plate' : 'BUSER' ,
128+ 'myattr' : 'Hurricane Cart' ,
129+ 'city' : 'SJK' ,
130+ }
131+
132+ with django_assert_num_queries (0 ):
133+ assert expected == bus .serialize ()
Original file line number Diff line number Diff line change 11[metadata]
22name = django_qserializer
3- version = 0.2.3
3+ version = 0.2.4
44url = https://github.com/buserbrasil/django-qserializer
55license = MIT
66author = Iuri de Silvio
You can’t perform that action at this time.
0 commit comments