2017-01-04 34 views
0

我知道mongoengine你可以设置之类的东西unique_with其他值存在,但我想设置一个约束,说:“如果PARAM_1为True,PARAM_2不能为空。”有没有办法在mongoengine中做到这一点?处理这个问题的最好方法是在更新/保存方法中设置条件吗?确保值与mongoengine

class Doc(Document): 
    param_1 = BooleanField() 
    param_2 = StringField() 

    def save(self, *args, **kwargs): 
     # DO SOMETHING HERE TO MAKE SURE 
     # IF param_1 == True, param_2 != None 
     super(Doc, self).save(*args, **kwargs) 

回答

1

最简单的方法是用signals

class Doc(Document): 
    param_1 = BooleanField() 
    param_2 = StringField() 

    @classmethod 
    def pre_save(cls, sender, document, **kwargs): 
     if (document.param_1 is True) and (document.param_2 is None): 
      raise ValueError("If param_1 is True then param_2 cannot be None") 

signals.pre_save.connect(Document.pre_save, sender=Document)