2017-01-04 35 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)