Python 如何在Django REST中使用validator方法验证模型字段?
我想在通过API保存对象时验证电子邮件。 我正在使用模型验证,但在通过API保存邀请对象时它不起作用,只有在通过管理面板创建对象时它才起作用 models.pyPython 如何在Django REST中使用validator方法验证模型字段?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我想在通过API保存对象时验证电子邮件。 我正在使用模型验证,但在通过API保存邀请对象时它不起作用,只有在通过管理面板创建对象时它才起作用 models.py def validate_email(value): if "@gmail.com" in value: return value else: raise ValidationError("This field accepts mail id of google only")
def validate_email(value):
if "@gmail.com" in value:
return value
else:
raise ValidationError("This field accepts mail id of google only")
class Invitation(models.Model):
email = models.EmailField(validators=[validate_email])
报告说:
请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序
报告说:
使用REST框架,验证完全在序列化程序类上执行
这意味着为了通过api验证模型实例创建,您需要在序列化程序类tself中定义所有验证。尝试通过 请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序 使用序列化程序验证模型属性。 序列化程序.py
from rest_framework import serializers
class Invitation(serializers.Serializer):
email = models.EmailField()
def validate_email(self, value):
if "@gmail.com" in value:
return value
else:
raise ValidationError("This field accepts mail id of google only")
它在我的机器上工作。我在DRF的帮助下进行了测试。当我通过API保存对象时,它只在通过admin保存对象时工作