6
6
LIST_SERIALIZER_KWARGS ,
7
7
ListSerializer ,
8
8
ModelSerializer ,
9
+ SerializerMethodField ,
9
10
)
10
11
11
12
from .fields import GeometryField , GeometrySerializerMethodField # noqa
@@ -132,7 +133,12 @@ def to_representation(self, instance):
132
133
# MUST be present in output according to GeoJSON spec
133
134
field = self .fields [self .Meta .geo_field ]
134
135
geo_value = field .get_attribute (instance )
135
- feature ["geometry" ] = field .to_representation (geo_value )
136
+ if isinstance (field , SerializerMethodField ):
137
+ method = getattr (field .parent , field .method_name )
138
+ geo_value = method (instance )
139
+ feature ["geometry" ] = field .to_representation (instance )
140
+ else :
141
+ feature ["geometry" ] = field .to_representation (geo_value )
136
142
processed_fields .add (self .Meta .geo_field )
137
143
138
144
# Bounding Box
@@ -143,7 +149,11 @@ def to_representation(self, instance):
143
149
# otherwise it can be determined via another field
144
150
elif self .Meta .bbox_geo_field :
145
151
field = self .fields [self .Meta .bbox_geo_field ]
146
- value = field .get_attribute (instance )
152
+ if isinstance (field , SerializerMethodField ):
153
+ method = getattr (field .parent , field .method_name )
154
+ value = method (instance )
155
+ else :
156
+ value = field .get_attribute (instance )
147
157
feature ["bbox" ] = value .extent if hasattr (value , 'extent' ) else None
148
158
processed_fields .add (self .Meta .bbox_geo_field )
149
159
0 commit comments