Chcę wyjaśnić podaną dokumentację django-rest-framework
dotyczą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?