Gio*_*sia 6 python django serialization django-rest-framework
我的模型有一个字段:
name = models.CharField(max_length=255, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
在序列化器中,我试图提出一个独特的验证错误
name = serializers.CharField(validators=[UniqueValidator(queryset=Department.objects.all(),
message=("Name already exists"))])
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为数据以这种格式进入序列化器name: {en: "drink"},仅在数据库字段中填充drink。
我可以在方法中引发错误create,但我想在序列化器上引发错误。感谢任何建议。我很急。任何不便敬请谅解。
提前致谢
我强烈建议您使用 Django Rest Framework 的序列化器字段级验证,它允许您对字段进行自定义验证。
像下面这样:
name = serializers.CharField()
...
def validate_name(self, value):
# I assumed that you will that the string value, is a JSON object.
entered_name = json.loads(value).get('en', None)
if entered_name and Department.objects.filter(name__exact=entered_name).exists():
raise serializers.ValidationError("Name already exists!")
# You need to return the value in after validation.
return value
...
Run Code Online (Sandbox Code Playgroud)