2

我正在将 Django Rest 框架与 MongoDB 一起使用,我正在尝试从 MongoDB 检索文档,然后将其序列化为 json,以便将其发送回以响应请求。

我有一个看起来像这样的数据库模型:

class TTest(Document):
    user_id = StringField()
    submission_status = StringField() 

和相应的序列化器:

class TTestSerializer(serializers.ModelSerializer):

    class Meta:
        model = models.TTest
        pk = "_id"

现在有了这些,我希望从数据库中检索一个文档,并尝试完全按照关于使用 Django Rest Framework 进行序列化的教程进行操作:

queryset = models.TTest.objects.filter(user_id='bbb')   # retrieving documents using mongoengine
serializer = TTestSerializer(queryset)
dt = serializer.data
print "DATA SERIALIZED: ", dt

当我运行这些行,尝试序列化时,我得到了这个错误:

AttributeError: 'MetaDict' object has no attribute 'pk'

从理论上讲,我认为它应该可以工作,因为我在序列化程序的元数据中声明主键是“_id”......有人可以帮我提个建议吗?

谢谢

4

2 回答 2

4

Serializer 类中没有这样的选项“pk”,因此不会有任何影响。

我对 mongoengine 了解不多,但如果对象不是标准的 Django 模型实例,我希望您需要使用普通的“Serializer”类而不是“ModelSerializer”。

值得在 REST framework 邮件列表上询问有关 REST framework 和 mongoengine 的问题,因为我知道还有其他一些人一直在做同样的事情。

https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework

于 2013-02-18T13:00:55.647 回答
0

Mongoengine 不是 Django 的 ORM 的直接替代品,因此可能无法与期望正常 ORM 的库本地集成。

您可能想尝试使用 mongoengine 的 http://django-tastypie-mongoengine.readthedocs.org/en/latest/

于 2013-02-20T14:38:21.740 回答