python - Mongoengine 序列化器错误 | python | Django 休息框架

标签 python python-2.7 django-rest-framework mongoengine

我在 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/

相关文章:

python - 使用 git 项目的“正确”方式

python - 如何在 Python 中结束给定时间后运行的程序

python - twil python linux错误

Python - 多线程帮助 - 读取多个文件 - ETL 到 SQL Server

Django SECURE_SSL_REDIRECT 和 301 HTTP 响应

python - 在 Django REST Framework 中将一组对象作为单个字典写入

python - Pandas 仅选择 idxmin+1(从第 n 个到最后一个)值

python - 使用 pip 安装我的包 python 时出错

python-2.7 - 将 Xpath 与 lxml etree 一起使用时,列表无法序列化错误

python - django-rest-framework 中的嵌套 detail_route