0

以下に示すように、Mongoengine の変更操作にカスタム検証を適用しようとしています。

class Form(Document):

    fields = ListField(EmbeddedDocumentField(Field))

    def modify(self, *args, **kwargs):
        for field in self.fields:
            if not [field for field in self.fields if field.type == "email"]:
                raise ValidationError("Form must have an email field")

        super(Form, self).modify(**kwargs)

     def update_form(self, modify_kwargs):
         return self.modify(**modify_kwargs)

ただし、 を呼び出すupdate_formと、カスタム検証では更新されたデータが考慮されませんmodify。このタイプの検証を行うためのある種の事前フックはありますか?

4

1 に答える 1

1

kwargs ではなく、objects フィールド属性に対して検証しています。ただし、各フィールドが .type を含むオブジェクトであることを確認してください。ただし、python 予約語タイプは使用しないでください。

class Form(Document):

fields = ListField(EmbeddedDocumentField(Field))

def modify(self, *args, **kwargs):
     if not [field for field in kwargs.get('fields', []) if field.type == "email"]:
         raise ValidationError("Form must have an email field")

    super(Form, self).modify(**kwargs)

 def update_form(self, modify_kwargs):
     return self.modify(**modify_kwargs)
于 2016-06-09T02:14:08.283 に答える