2017-01-04 7 views
0

私はmongoengineを知っています。unique_withのようなものを設定できますが、 "param_1がTrueならparam_2をnullにすることはできません"という制約を設定します。 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) 
関連する問題