sli*_*lik 1 python mongoengine flask-mongoengine
我正在尝试创建一个传递键/值参数来获取对象的 get 方法。
def find_by_one(self, val, key='id'):
obj = self.__model__.objects(key=val).first()
return obj if obj else None
Run Code Online (Sandbox Code Playgroud)
我得到的错误
InvalidQueryError: Cannot resolve field "key"
Run Code Online (Sandbox Code Playgroud)
亲切地回答了我的问题。我最终改变了我的方法来传递 **kwargs 并将其作为我的查询集传递
def find_by_one(self, **kwargs):
user = self.__model__.objects(**kwargs).first()
return user if user else None
Run Code Online (Sandbox Code Playgroud)
现在我可以调用我的 find_by_one
obj.find_by_one(id=obj_id)
Run Code Online (Sandbox Code Playgroud)
代替
obj.find_by_one(obj_id)
Run Code Online (Sandbox Code Playgroud)
这意味着您的模型没有名为 的字段key,这正是它正在寻找的字段,因为您正在传入key=val。
我假设您正在寻找key被key函数参数的值替换。关键字参数不能以这种方式工作,因此在这种情况下,您需要构造一个字典并使用解包:
obj = self.__model__.objects(**{key: val}).first()
Run Code Online (Sandbox Code Playgroud)