1

我正在尝试创建一个传递键/值参数以获取对象的 get 方法。

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 并将其作为我的查询集传递

  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)
4

1 回答 1

5

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

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

obj = self.__model__.objects(**{key: val}).first()
于 2013-09-08T05:37:57.423 回答