Я хочу уточнить данную документацию 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()
.
Надеюсь, кто-нибудь поделится некоторыми своими знаниями, чтобы объяснить, и это, безусловно, будет очень полезно в моем процессе разработки.