Pyt*_*ast 2 python django django-rest-framework
我有一个序列化器。我想限制更新字段。我该怎么做呢?
class ABCSerializer(serializers.ModelSerializer):
class Meta:
"""Meta."""
model = ModelA
fields = ('colA', 'colB', 'colC',)
Run Code Online (Sandbox Code Playgroud)
colA是创建对象时的必填字段。但是,不应允许其更新。我怎样才能做到这一点??
您可以通过验证该字段在更新时未更改来使用 Django REST Frameworks字段级验证,如下所示:
from rest_framework.exceptions import ValidationError
class ABCSerializer(serializers.ModelSerializer):
colA = serializers.CharField(max_length=100)
def validate_colA(self, value):
if self.instance and self.instance.colA != value:
raise ValidationError("You may not edit colA")
return value
class Meta:
"""Meta."""
model = ModelA
fields = ('colA', 'colB', 'colC',)
Run Code Online (Sandbox Code Playgroud)
这将检查这是否是更新(通过检查序列化器上是否填充了实例),如果是,它将检查您是否对该字段进行了更改,如果有,它将抛出一个ValidationError. 这种方法的好处是,您可以保持视图代码与以前相同,并继续在序列化器中保留验证行为。
| 归档时间: |
|
| 查看次数: |
5944 次 |
| 最近记录: |