我在 mongoengine 中使用 django Rest 框架序列化“PointField”时遇到问题。
以下是我的模型
from mongoengine import *
import datetime
class Location(Document):
user_id = StringField(required=True)
location_title = StringField(required=False)
location_type = StringField(required=False)
coordinates = PointField(required=True)
location_rating = IntField(required=True)
reason = StringField(required=False)
data_entry_date = DateTimeField(default=datetime.datetime.now)
以下是我的序列化器代码
from rest_framework_mongoengine import serializers
from pycoreapi.models.location import Location
class LocationSerializer(serializers.MongoEngineModelSerializer):
class Meta:
model = Location
depth = 3
我像这样从 mongodb 返回查看响应
filtered_objects = Location.objects(coordinates__geo_within_sphere=[[longitude, latitude], radius / 6371])
serializer = LocationSerializer(filtered_objects)
return serializer.data, status.HTTP_200_OK
现在,来自 mongodb 的过滤位置列表运行良好,但序列化器无法工作。
我收到以下错误
异常值:“PointField”对象没有属性“_get_val_from_obj”
异常位置: ~/python2.7/site-packages/rest_framework/fields.py in field_to_native,第 422 行
没有任何线索,请帮忙。
最佳答案
rest-framework 的 mongoengine 扩展没有用于地理字段的序列化器。
我认为最好的选择是创建自定义字段和序列化器。对于序列化器,您可以继承 MongoengineModelSerializer
并覆盖 get_field
。
关于python - Mongoengine 序列化器错误 | python | Django 休息框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333451/