我目前正在创建一个基于DRF的api . 我有一个模型,如:
class Task(models.Model):
name = models.CharField(max_length = 255)
completed = models.BooleanField(default = False)
description = models.TextField()
text = models.TextField(blank = False, default = "this is my text" )
def __unicode__(self):
return self.name
此模型的相应Serializer如下:
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ('name','description','completed','text')
现在我的问题是我想在获取数据时验证模型的“名称”字段 . 例如,我可能会通过类似于Django Form的Python代码来检查用户的名字或第二个名字:
def clean_name(self):
name = form.cleaned_data.get('name')
first,second = name.split(' ')
if second is None:
raise forms.ValidationError("Please enter full name")
我在Serializers.serializer类中知道名为'validate_(fieldname)'的东西 . 但是我希望在Serializers.ModelSerializer中使用它 . (类似于Django中的自定义表单验证)
1 回答
您可以 add a validate_name() method to your serializer 执行此验证 . 它应返回验证值或引发
ValidationError
.要检查用户是否输入了全名,我们将使用
str.split()
,它将返回字符串中的所有单词 . 如果没有 . 字符串中的单词不大于1,那么我们将引发ValidationError
. 否则,我们返回value
.