You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoengine自定义__init__后报unexpected keyword argument '__auto_convert'如何解决

问题原因

你重写的ProjectMember类__init__方法仅声明接收key、member_type两个入参,没有适配MongoEngine底层逻辑需要传入的额外内置参数(如报错中的__auto_convert、_created等),也没有将这些参数透传给父类Document的初始化方法,导致ORM从数据库查询结果构造实例时参数匹配失败。

解决方案

修改__init__方法的入参声明,增加可变参数接收所有额外入参并透传给父类初始化方法即可,修改后代码如下:

from mongoengine import StringField, Document, EmbeddedDocument, EmbeddedDocumentField

class ProjectMemberKey(EmbeddedDocument):
    member_email = StringField(required=False)
    project_id = StringField(required=False)


class ProjectMember(Document,Entity):
    key = EmbeddedDocumentField(ProjectMemberKey, primary_key=True)
    member_type = StringField()

    # 增加*args、**kwargs接收所有额外参数
    def __init__(self, key, member_type, *args, **kwargs):
        # 把额外参数透传给Document父类的初始化方法
        super(ProjectMember, self).__init__(*args, **kwargs)
        Entity.__init__(self)
        self.key = key
        self.member_type = member_type

修改后既保留了Entity类的初始化调用逻辑,也兼容了MongoEngine的底层实例化逻辑,原有你自定义创建实例的写法不需要做任何调整。

内容的提问来源于stack exchange,提问作者robo98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:36:01