mongoengine来自另一个字段的默认值

ivi*_*ica 2 python mongoengine

我正在尝试使用MongoEngine进行一个项目而且相当不错.我想知道是否可以为另一个字段中的字段设置默认值?像这样的东西

import mongoengine as me

class Company(me.Document):
    short_name = me.StringField(required=True)
    full_name = me.StringField(required=True, default=short_name)
Run Code Online (Sandbox Code Playgroud)

这失败了,错误 ValidationError (Company:None) (StringField only accepts string values: ['full_name'])

:编辑:

我没有提到我的应用程序有一个服务层,使我能够像这样简单地执行:

if company_data['short_name'] is None:
            myCompany.full_name = company_data['short_name']


        obj = myCompany.save()
Run Code Online (Sandbox Code Playgroud)

而且效果很好.

ale*_*cxe 7

您可以覆盖以下save()方法Document:

class Company(me.Document):
    short_name = me.StringField(required=True)
    full_name = me.StringField()

    def save(self, *args, **kwargs):
        if not self.full_name:
            self.full_name = self.short_name

        return super(Company, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)