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

您正在验证 objects 字段属性而不是 kwargs。但请确保每个字段都是包含 .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 回答