如何解决MongoEngine QuerySet两次插入调用默认函数
我必须插入多个记录,并且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)
时。
我真正的默认功能是递增数字,并以此递增2倍。
我知道,我们可以使用Document.save
保存文档,但是如果输入multiple
,则必须多次调用save
。
反正在那里,以确保default
函数仅调用一次吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。