Быстрый концептуальный вопрос для вас.Я работаю над учебником по Django, который включает в себя создание API-интерфейса через django (с использованием v 2.1).У меня есть следующий сериализатор для обработки объектов комментариев из моей модели комментариев в приложении статей.
class CommentSerializer(serializers.ModelSerializer):
author = ProfileSerializer(required=False)
createdAt = serializers.SerializerMethodField(method_name='get_created_at')
updatedAt = serializers.SerializerMethodField(method_name='get_updated_at')
class Meta:
model = Comment
fields = (
'id',
'author',
'body',
'createdAt',
'updatedAt',
)
def create(self, validated_data):
article = self.context['article']
author = self.context['author']
return Comment.objects.create(
author=author, article=article, **validated_data
)
Я хочу лучше понять этот раздел кода:
def create(self, validated_data):
article = self.context['article']
author = self.context['author']
В частности, откуда берется «контекст»?У меня достаточно понимания того, что именно здесь происходит, мне более или менее просто любопытно, какая механика стоит за тем, что здесь происходит.Например, мы не указали контекст как переменную аргумента в функции create.Контекст исходит из моей модели?Есть ли какая-то магия django, происходящая в rest_framework, которая назначает (может быть, весь экземпляр) переменную контекста?
Спасибо всем!