序列化程序 django rest 中的补丁
patch in serializer django rest
我有 1 个 parent 和 1 个 child 序列化器,现在 child 序列化器继承了 parent 序列化器的所有字段、函数和方法。
我想在 child 序列化器中修改补丁请求,虽然请求是补丁,然后一些
字段将无法更新,因为会有完全不同的两个 url。
例如在 child class 中将无法更新名字和姓氏。
class Parent(serializers.ModelSerializer):
class Meta(BaseMeta):
model = Account
fields = BaseMeta.fields + (
'name', 'surname', 'age', 'city', 'country', 'job', 'family')
extra_kwargs = {'name': {'required': True, 'allow_blank': False, 'allow_null': False, 'trim_whitespace': False},
'surname': {'required': True, 'allow_blank': False, 'allow_null': False, 'trim_whitespace': False},
'country': {'read_only': True},
'job': {'required': True, 'allow_blank': False, 'allow_null': False, },
}
class Child(ParentSerializer):
class Meta(BaseMeta):
model = Account
fields = BaseMeta.fields + ()
extra_kwargs = {
}
为了实现PATCH
api,您可以创建一个详细视图。
from rest_framework import generics, mixins
from .models import Child
from .serializers import Child as ChildSerializer
class ChildDetail(mixins.UpdateModelMixin, generics.GenericAPIView):
queryset = Child.objects.all()
serializer_class = ChildSerializer
def patch(self, request, *args, **kwargs):
return self.partial_update(request, *args, **kwargs)
在详细视图中,您还可以添加get
、retrieve
、put
、delete
方法。
希望对你有帮助。
我有 1 个 parent 和 1 个 child 序列化器,现在 child 序列化器继承了 parent 序列化器的所有字段、函数和方法。 我想在 child 序列化器中修改补丁请求,虽然请求是补丁,然后一些 字段将无法更新,因为会有完全不同的两个 url。 例如在 child class 中将无法更新名字和姓氏。
class Parent(serializers.ModelSerializer):
class Meta(BaseMeta):
model = Account
fields = BaseMeta.fields + (
'name', 'surname', 'age', 'city', 'country', 'job', 'family')
extra_kwargs = {'name': {'required': True, 'allow_blank': False, 'allow_null': False, 'trim_whitespace': False},
'surname': {'required': True, 'allow_blank': False, 'allow_null': False, 'trim_whitespace': False},
'country': {'read_only': True},
'job': {'required': True, 'allow_blank': False, 'allow_null': False, },
}
class Child(ParentSerializer):
class Meta(BaseMeta):
model = Account
fields = BaseMeta.fields + ()
extra_kwargs = {
}
为了实现PATCH
api,您可以创建一个详细视图。
from rest_framework import generics, mixins
from .models import Child
from .serializers import Child as ChildSerializer
class ChildDetail(mixins.UpdateModelMixin, generics.GenericAPIView):
queryset = Child.objects.all()
serializer_class = ChildSerializer
def patch(self, request, *args, **kwargs):
return self.partial_update(request, *args, **kwargs)
在详细视图中,您还可以添加get
、retrieve
、put
、delete
方法。
希望对你有帮助。