如何解决Mongokit的TypeError: __init__()收到意外关键字参数'collection'错误
解决Mongokit中TypeError: init() got an unexpected keyword argument 'collection'的问题
嘿,这个错误我之前踩过坑,咱们来拆解一下怎么解决:
首先,这个错误的核心原因是:你在实例化DocumentLog的时候,传递了collection相关的参数,但你的模型类(或者它继承的MongokitBaseModel)的构造函数根本不接受这个参数。看你的代码,问题出在connection.DocumentLog(dData)这一行的调用方式上。
具体解决步骤:
修正实例化方式:
Mongokit的模型类不需要通过连接对象来调用实例化,你直接用类本身就行。而且你已经在DocumentLog里定义了__collection__和__database__,Mongokit会自动关联对应的集合,不需要手动传collection参数。把代码改成这样:# 先确保模型注册到连接(如果你的MongokitBaseModel没自动处理的话) connection.register([DocumentLog]) # 直接用类实例化,传入你的数据dData db = DocumentLog(dData)检查你的dData字典:
如果dData里面包含了collection这个键,那实例化的时候会把它当作关键字参数传给构造函数,这也会触发这个错误。所以先检查dData的内容,把多余的collection键删掉,只保留文档需要的字段。验证父类MongokitBaseModel的实现:
如果MongokitBaseModel是你自定义的父类,要确保它的__init__方法正确传递参数给Mongokit的官方基类(比如mongokit.Document)。不要在父类里拦截或意外添加不兼容的参数逻辑。
简单来说,Mongokit的模型已经通过类属性__collection__指定了集合,实例化时只需要传入文档数据就行,不用额外传集合相关的参数。
内容的提问来源于stack exchange,提问作者reny
相关产品推荐
相关产品推荐

