Chcę wyjaśnić podaną dokumentację django-rest-frameworkdotyczącą tworzenia obiektu modelowego. Jak dotąd odkryłem, że istnieją 3 podejścia do radzenia sobie z takimi zdarzeniami.
Metoda serializatora
create(). Oto dokumentacjaclass CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data)Metoda ModelViewset
create(). Dokumentacjaclass AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly]Metoda ModelViewset
perform_create(). Dokumentacjaclass SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
Te trzy podejścia są ważne w zależności od środowiska aplikacji.
Ale KIEDY musimy użyć każdej create() / perform_create()funkcji ??. Z drugiej strony znalazłem konto, na którym zostały wywołane dwie metody tworzenia dla pojedynczego żądania wpisu modelviewset create()i serializera create().
Mam nadzieję, że ktoś podzieli się swoją wiedzą, aby wyjaśnić, co z pewnością będzie bardzo pomocne w moim procesie rozwoju.
create(self, validated_data)serializatora, to znaczy, że skupia się na logice walidacji danych? a co więcej, może pomóc przywrócić dane danego serializatora z powrotem do odpowiedzi, prawda?