问题描述
我必须插入多个记录,并且QuerySet
中的mongoengine
有方法insert
,可以使用单个方法调用来创建多个记录。
我的模型具有default
方法,如果没有为该列分配属性,则应调用该方法。但是,对于insert
,我们必须提供Document
对象,并且当我们创建Document
对象时,它会调用默认值,而第二次它调用我们执行insert
时的默认值。我有如下代码。
from mongoengine import Document
from mongoengine import StringField
def get_name():
print("*"*80)
print('getname')
print("*"*80)
return 'first_name'
class User(Document):
email = StringField(required=True)
first_name = StringField(max_length=50,default=get_name)
last_name = StringField(max_length=50)
if __name__ == '__main__':
from mongoengine import connect
connect('test',host="mongodb://127.0.0.1:27017/test")
m = User(email='test@test.com')
User.objects.insert(m)
当我运行它时,它会给出类似的输出。
python /tmp/test.py
********************************************************************************
getname
********************************************************************************
********************************************************************************
getname
********************************************************************************
表示get_name
在执行m = User(email='test@test.com')
时调用,第二次调用User.objects.insert(m)
时。
我知道,我们可以使用Document.save
保存文档,但是如果输入multiple
,则必须多次调用save
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)