我正在尝试将项目从 django-rest-framework-gis 0.7 迁移到 0.8 和 django-rest-framework 2.4.3。到 3.0.5。我解决了很多错误,但我已经停止了以下问题。
我的 GeoFeatureModelSerializer 具有以下属性:
class Meta:
model = RoadRoute
id_field = False
geo_field = 'geom'
fields = ('auth_code', 'states', 'creation_date')
def validate(self, attrs):
if len(attrs['states']) > 0:
states = State.objects.filter(code__in=attrs['states']).unionagg()
if attrs['geom'].within(states) is False:
raise ValidationError(_('Route is not within the allowed states.'))
else:
return attrs
else:
raise ValidationError(_('States field can not be empty.'))
在我的测试中,我遇到了这个错误:
File "/home/wille/py-projects/routes_registry_api/routes_registry_api/routes/serializers.py", line 59, in validate
if attrs['geom'].within(states) is False:
AttributeError: 'str' object has no attribute 'within'
geom 字段不是作为 GeometryField 读取的,而是作为 str 读取的。在 DRF-gis 的 0.7 版本中,相同的代码可以正常工作。