""" 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): if...
"'%s' should either include a `serializer_class` attribute, " "or override the `get_serializer_class()` method." % self.__class__.__name__ ) returnself.serializer_class #这里设置了上下文 defget_serializer_context(self): """ Extra context provided to the serializer class. """ return{...
在视图继承viewset后,我们只能对序列化类做一个声明,但是在实际创建序列化实例时,会帮我们将rquest参数传递到实列中,可以使用self.context来获取. 源码分析: 从BaseSerializer中: class BaseSerializer(Field): """ The BaseSerializer class provides a minimal class which may be used for writing...
get_serializer(self, args, *kwargs) 如果我们在View中,想要获取serializer instance,可以直接调用此方法。 get_serializer_context(self) 创建request、format、view三个数据对象,作为serializer实例化时的context属性; defget_serializer(self,*args,**kwargs): """ Return the serializer instance that should be ...
context: 传入的额外数据,可以使用序列化器对象的context属性获取 序列化的使用 序列化器序列化之后的结果可以使用serializer.data属性获取 如果要被序列化的是多条数据的查询集queryset,可以指定many=True参数补充说明 返回列表形式的数据,需要指定JsonResponse(serializer.data, safe=False),这是仅限于使用django原生的...
class UserView(APIView): def get(self,request,*args,**kwargs): models.UserInfo2.objects.all().update(ctime=datetime.datetime.now()) queryset = models.UserInfo2.objects.all() ser = UserSerializer(instance=queryset,many=True) context = {"status":True, "data":ser.data} return Response(con...
2. Serializer类 Serializer类的构造方法: StudentSerializer(instance=None,data=empty,**kwargs) 说明: 用于序列化时,将模型类对象传入instance参数; 用于反序列化时,将要被反序列化的数据传入data参数 除了instance和data参数外,在构造Serializer对象时,还可以通过context参数额外添加数据,通过context添加的数据,可以通过...
重写get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。 defget_serializer_class(self): ifself.action=='list': # 返回list操作对应的序列化器类 elifself.action=='latest': # 返回latest操作对应的序列化器类 ...
defget_test2_name(self):returnself.test_2_id.name views.py 代码语言:javascript 复制 from rest_framework.serializersimportModelSerializer from app.modelsimportTest1classTest_ser(ModelSerializer):classMeta:model=Test1 # 这里会把Test1面的所有名称空间存在的都进行导入 ...
重写get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。 代码语言:javascript 复制 defget_serializer_class(self):ifself.action=='list':# 返回list操作对应的序列化器类 elif self.action=='latest': # 返回latest操作对应的序列化器类else:# 返回其他操作对应的序列化...