В документации говорится:
Вы можете предоставить произвольный дополнительный контекст, передавая аргумент 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"
Эти операторы печати приводят к:
Context: {'request': <rest_framework.request.Request object at 0x1127d3160>, 'format': None, 'view': <account.api.views.AccountView object at 0x1127c4f98>
Foo: None
Что я здесь не так делаю? Независимо от того, какой контекст не изменен с желаемым дополнительным контекстом.