Джанго Моделвиевсет. Как объединить два метода/функции выполнения?

Есть ли способ объединить методы/функции выполнения? Представление использует ModelViewSet. У меня есть две функции выполнить_создать и выполнить_обновление, которые делают одно и то же, и я подумал, можно ли их как-то объединить?

Тело

{
    "title": "1 Title",
    "description": "1 Description",
    "author": {
        "id": 1
    }
}

Вид

class ArticleView(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

    def perform_create(self, serializer):
        author = get_object_or_404(Author, id=self.request.data['author']['id'])
        return serializer.save(author=author)

    def perform_update(self, serializer):
        author = get_object_or_404(Author, id=self.request.data['author']['id'])
        return serializer.save(author=author)

Сериализаторы

class AuthorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Author
        fields = '__all__'


class ArticleSerializer(serializers.ModelSerializer):
    author = AuthorSerializer()

    class Meta:
        model = Article
        fields = '__all__'

🤔 А знаете ли вы, что...
Python популярен в анализе данных и машинном обучении с помощью библиотеки scikit-learn.


1
16
1

Ответ:

Решено

Также назначьте функцию perform_create как perform_update:

class ArticleView(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

    def perform_create(self, serializer):
        author = get_object_or_404(Author, id=self.request.data['author']['id'])
        return serializer.save(author=author)

    perform_update = perform_create