带有修改的 Mongoengine 自定义验证
Mongoengine custom validation with modify
我正在尝试对 Mongoengine modify 操作应用自定义验证,如下所示:
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
中的更新数据。是否有某种预挂钩来进行这种类型的验证?
您正在根据对象字段属性而不是 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)
我正在尝试对 Mongoengine modify 操作应用自定义验证,如下所示:
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
中的更新数据。是否有某种预挂钩来进行这种类型的验证?
您正在根据对象字段属性而不是 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)