Я хочу уточнить данную документацию django-rest-framework относительно создания модельного объекта. До сих пор я обнаружил, что существует три подхода к обработке таких событий.
-
Метод Serializer
create(). Вот документацияclass CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data) -
Метод ModelViewset
create(). Документацияclass AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly] -
Метод ModelViewset
perform_create(). Документацияclass SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
Эти три подхода важны в зависимости от среды вашего приложения.
Но КОГДА нам нужно использовать каждую функцию create()/perform_create()?? С другой стороны, я обнаружил, что для одного пост-запроса были вызваны два метода create: modelviewset create() и serializer create().
Надеюсь, кто-нибудь поделится некоторыми своими знаниями, чтобы объяснить, и это, безусловно, будет очень полезно в моем процессе разработки.