来自其他字段的mongoengine默认值 [英] mongoengine default value from another field

查看:397
本文介绍了来自其他字段的mongoengine默认值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为一个项目尝试MongoEngine,它相当不错.我想知道是否可以为另一个字段中的一个字段设置默认值?像这样

I'm trying out MongoEngine for a project and its quite good. I was wondering if it is possible to set a default value for a field from another field? Something like this

import mongoengine as me

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

此操作失败,并显示错误ValidationError (Company:None) (StringField only accepts string values: ['full_name'])

this fails with an error ValidationError (Company:None) (StringField only accepts string values: ['full_name'])

:修改:

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

I did not mention that my app has a service layer which enabled me to simply do it like this:

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


        obj = myCompany.save()

而且效果很好.

推荐答案

您可以覆盖Document上的> save() 方法:

You can override save() method on a 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)

这篇关于来自其他字段的mongoengine默认值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆