【发布时间】:2015-09-14 08:46:24
【问题描述】:
在更新对象之前验证标题字段。如何访问序列化对象的数据以便将value 与该对象的旧值进行比较?
from rest_framework import serializers
class BlogPostSerializer(serializers.Serializer):
title = serializers.CharField(max_length=100)
content = serializers.CharField()
def validate_title(self, value):
"""
Check that the blog post is about Django.
"""
if 'django' not in value.lower():
raise serializers.ValidationError("Blog post is not about Django")
return value
【问题讨论】:
-
您打算与旧对象进行什么样的比较?
-
另外,您可以发布代码以供您查看。
-
@RahulGupta:基于上面的示例,我想检查标题是否更改为与以前相同,如果是则引发 ValidationError 异常。在 DRF 的第 2 版中,我可以在 validate_title 方法中使用 self.object.title。
-
你的意思是如果
title的值没有改变,你想引发异常吗? -
@RahulGupta:抱歉,我无法发布此代码。是否可以在此序列化程序中进行此类检查?上面的例子来自 DRF 文档。我忘了说我在嵌套序列化器中使用了 ModelSerializer,而不是 Serializer,并且 BlogPostSerializer 被另一个 ModelSerializer 使用,该 ModelSerializer 在我的 ModelViewSet 中设置为 serializer_class。
标签: python django serialization django-rest-framework