文档指出:
在实例化序列化程序时,可以通过传递
driver.switchTo().frame(your locator for 1st iframe here);// to switch to 1st iframe // your action here driver.switchTo().defaultContent(); driver.switchTo().frame(your locator for 2nd iframe here); // to switch to 2nd iframe
参数来提供任意其他上下文。
好吧,让我们这样做:
context
文档然后指出:
可以通过访问
serializer = AccountSerializer(account, context={'foo':'bar'})
属性在任何序列化器字段逻辑中使用上下文字典。
好吧,让我们这样做:
self.context
这些打印语句导致:
class AccountSerializer(serializers.ModelSerializer):
custom_field = serializers.SerializerMethodField()
class Meta:
model = Account
fields = ('id', 'name', 'custom_field')
def get_custom_field(self, obj):
print('Context:', self.context)
foo = self.context.get('foo')
print('Foo:', foo)
...
return "custom data"
我在这里做错了什么?无论什么上下文都没有用所需的额外上下文进行修改。
答案 0 :(得分:3)
您正在显示DRF GenericAPIView中使用序列化程序的结果。默认情况下,get_serializer_context方法提供上下文条目“ request”,“ view”和“ format”,而序列化程序构造函数的context参数无效。 如果要在此处添加更多内容,还需要在视图中覆盖:
def get_serializer_context(self):
context = super().get_serializer_context()
context['foo'] = 'bar'
return context