Django REST Framework: как работает контекст сериализатора?
Это довольно стандартная задача в Django REST Framework для предоставления дополнительныхargs
/kwargs
сериализатору установить значения полей, заданных не черезrequest.data
, но через значение в параметрах URL или куки. Например, мне нужно установитьuser
поле моей модели комментариев равноrequest.user
по запросу POST. Эти дополнительные аргументы называются контекстом.
Несколько вопросов (1, 2) в StackOverflow предлагают переопределитьget_serializer_context()
метод моегоModelViewSet
, Я сделал, и это не помогает. Я попытался понять, что не так, и обнаружил, что из исходного кода я не понимаю, как эта контекстная система должна работать в целом. (документация по этому вопросу тоже отсутствует)
Кто-нибудь может объяснить, где сериализатор добавляет контекст к обычным данным запроса? Я нашел два места, где он сохраняет значения из контекста.
serializer.save (), метод, который смешивает kwargs с проверенными данными, но обычно вызывается без аргументов (например,ModelMixins).поля.__new__()
, который кэширует арги и кварги, но кажется, что никто никогда не читает их позже.