【问题标题】:'UserManager' object has no attribute 'raw_query''UserManager' 对象没有属性 'raw_query'
【发布时间】:2015-12-12 14:00:08
【问题描述】:

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

这是我的美味派资源:

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' 

【问题讨论】:

    标签: django tastypie django-nonrel


    【解决方案1】:

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

    这个解决方案是创建一个代理模型。通过声明代理模型,我们可以对父模型进行操作,甚至可以修改管理器。

    代理模型:

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

    资源:
    类用户资源(模型资源): 类元:

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

    【讨论】:

      【解决方案2】:

      这与 Tastypie 完全无关。你确定你需要一个原始查询,还是上面只是一个例子?

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

      from django_mongodb_engine.contrib import MongoDBManager
      
      class User(models.Model):
          mongo_manager = MongoDBManager()
      

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

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

      【讨论】:

      • 仍然出现同样的错误。问题是如何更改 django 的 UserModel 的管理器?
      • 如果您不需要 UserManager 中的任何内容,请尝试将 objects 替换为其他内容
      • 谢谢你的建议..我找到了解决方案并回答了我自己的问题:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多