'UserManager'对象没有属性'raw_query'

时间:2015-12-12 14:00:09

标签: django tastypie django-nonrel

带有tastypie的

nonrel(Mongodb)。我创建了一个资源类,它从数据库中返回选定的auth_user。由于某些原因,我确实从 ObjectId 更改了 _id 字段类型到 Int64 。我使用raw_query()来访问所需的auth_user但它似乎不起作用。任何人都建议我该怎么做才能让raw_query()为UserModel工作。

以下是我的tastypie资源:

class UserResource(ModelResource):
    class Meta:

        queryset=User.objects.raw_query({'_id':5})
        resource_name="user"
        fields=["username","first_name","last_name"]
        include_resource_uri=False
        allowed_methods=["get"]

输出

'UserManager' object has no attribute 'raw_query' 

2 个答案:

答案 0 :(得分:0)

这与Tastypie根本无关。您确定需要原始查询,还是以上只是一个示例?

通过查看docs,您应该可以执行以下操作:

from django_mongodb_engine.contrib import MongoDBManager

class User(models.Model):
    mongo_manager = MongoDBManager()

然后你应该可以像上面那样使用它,即:

queryset=User.mongo_manager.raw_query({'_id':5})

答案 1 :(得分:0)

我自己解决了这个问题,为了别人的帮助,我正在回答我自己的问题。希望这会对某人有帮助。

此解决方案是创建代理模型。通过声明代理模型,我们可以在父模型上执行操作,甚至可以修改管理器。

代理模型:

class UserClass(User):
    objects = MongoDBManager()
    class Meta:
        proxy=True

<强>资源:
    class UserResource(ModelResource):         class Meta:

        queryset=UserClass.objects.raw_query({'_id':5})
        resource_name="user"
        fields=["username","first_name","last_name"]
        include_resource_uri=False
        allowed_methods=["get"]