Python MongoEngine QuerySet插入调用默认函数两次
我必须插入多条记录,并且Python MongoEngine QuerySet插入调用默认函数两次,python,model,insert,mongoengine,Python,Model,Insert,Mongoengine,我必须插入多条记录,并且mongoengine中有一个用于QuerySet的方法,该方法允许使用单个方法调用创建多条记录 我的模型有default方法,如果没有为列指定属性,则应该调用该方法。但是,在插入的情况下,我们必须提供文档对象,当我们创建文档对象时,它调用默认值,第二次在执行插入时调用默认值。我有如下代码 from mongoengine import Document from mongoengine import StringField def get_name(): p
mongoengine
中有一个用于QuerySet
的方法,该方法允许使用单个方法调用创建多条记录
我的模型有default
方法,如果没有为列指定属性,则应该调用该方法。但是,在插入
的情况下,我们必须提供文档
对象,当我们创建文档
对象时,它调用默认值,第二次在执行插入
时调用默认值。我有如下代码
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
********************************************************************************
意思是当我们做m=User(email=)时调用get\u name
test@test.com“)
和第二次调用时,User.objects.insert(m)
我真正的默认函数是递增数字,并以此递增2倍
我知道,我们可以使用Document.save
来保存文档,但是如果multiple
条目,我必须多次调用save
是否仍然存在确保只调用一次函数的默认值