python / mongoengine将关键字参数作为变量传递

时间:2013-09-08 05:25:14

标签: python mongoengine flask-mongoengine

我正在尝试创建一个get方法,将key / value参数传递给fetch对象。

def find_by_one(self, val, key='id'):
    obj = self.__model__.objects(key=val).first()
    return obj if obj else None

我得错误

InvalidQueryError: Cannot resolve field "key"
有点回答了我的问题。我最后改变了我的方法来传递** kwargs并将其作为我的queryset传递

  def find_by_one(self, **kwargs):
    user = self.__model__.objects(**kwargs).first()
    return user if user else None

现在我可以调用我的find_by_one

obj.find_by_one(id=obj_id)

而不是

obj.find_by_one(obj_id)

1 个答案:

答案 0 :(得分:4)

这意味着您的模型没有名为key的字段,因为您正在传递key=val,所以它正在寻找它。

我假设您正在寻找key替换为函数的key参数的值。关键字参数不起作用,因此在这种情况下,您需要构建一个字典并使用解包:

obj = self.__model__.objects(**{key: val}).first()