在DRF(Django Rest Framework)的 Serializer 中,以get_开头的方法是 Serializer Method Field 的方法名前缀,用于自定义该字段的值。 例如,如果你有一个 Serializer,里面有一个CharField字段,你可以通过定义一个以get_开头的方法来自定义该字段的值。示例如下: fromrest_frameworkimportserializersclassMySerializer(serial...
serializer_class = BookSerializer 作业三: fromrest_framework.genericsimportGenericAPIView# 获取所有图书classGetBookView(GenericAPIView):defget(self,request):book_list=self.get_queryset()ser=self.get_serializer(instance=book_list,many=True)returnResponse(ser.data)# 新增图书classNewBookView(GenericAPIView...
city_serializer = DrfCitySerializer(instance=queryset) return Response(city_serializer.data) def delete(self, req, id): DrfCity.objects.get(pk=id).delete() return Response("删除成功") 23.【drf-更新数据-序列化器save方法】 drf-序列化器的save方法内部,判断如果数据表中有对应数据则更新,否则新创...
serializer_class=self.get_serializer_class() kwargs.setdefault('context',self.get_serializer_context()) returnserializer_class(*args,**kwargs) 所以,在serializer中进行校验时,可以通过self.context['request']来获取到request对象 1 2 3 4 5 6 7 8 9 ... defvalidate_topic(self,value): ifnotval...
defget_permissions(self):# action 属性只有使用 viewset 的时候才存在ifself.action=='retrieve':return[permissions.IsAuthenticated()]elifself.action=='create':return[]return[] 需要多个 serializer 如果一个 viewset 需要多个 serializer,可以重写 get_serializer_class 方法 ...
serializer = self.get_serializer(instance) return rtn_success_info(serializer.data) def update(self, request, *args, **kwargs): """ put 修改 """ try: partial = kwargs.pop('partial', False) instance = self.get_object() serializer = self.get_serializer(instance, data=request.data, part...
增加serializer_class属性,直接指定使用的序列化器 增加过滤器属性:filter_backends 增加分页属性:pagination_class 增加lookup_field属性和实现get_object()方法:用于获取单条数据,可自定义默认分组名(pk) 基于上面的项目新增app模型: myapp/models.py 代码语言:javascript ...
def get(self,request,pk): book_obj = models.book.objects.filter(pk=pk).first() book_ser = BookSerializers(book_obj) return Response(book_ser.data) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 2.2 序列化器实现put修改数据接口 views.py ...
在序列化器内部写一个get_外键名,会显示指定的数据 get方法接收两个参数 classBookSerializer(serializers.Serializer):id=serializers.IntegerField(required=False,)#required设置后表示改字段可以不传title=serializers.CharField(max_length=32,min_length=2,)price=serializers.DecimalField(max_digits=6,decimal_pla...
serializers import SnippetSerializer 我们API的根将是一个视图,支持列出所有现有代码段或创建新代码段。 代码语言:javascript 复制 @csrf_exempt def snippet_list(request): """ List all code snippets, or create a new snippet. """ if request.method == 'GET': snippets = Snippet.objects.all() ...