Возвращать существующую запись, а не создавать Rest API Framework - PullRequest
0 голосов
/ 10 июля 2019

В моем API у меня есть привязанное создание, которое ссылается на другую запись OneToOne. Однако иногда кажется, что пользователи отправляют два запроса одновременно, а второй отказывает из-за дублирования записи:

class CreateProfileLink(generics.CreateAPIView):

    def perform_create(self, serializer):

        ins = serializer.save(user=self.request.user)

    serializer_class = ProfileLinkSerializer

Есть ли способ переопределить метод create, чтобы вернуть запись, если она уже существует, вместо ее создания?

1 Ответ

1 голос
/ 10 июля 2019

Вы можете использовать get_or_create в своем классе сериализатора, переопределив метод create():

class ProfileLinkSerializer(serializers.ModelSerializer):
    ...

    class Meta:
        model = Profile
        fields = (...)

    def create(self, validated_data):
        profile, _ = Profile.objects.get_or_create(**validated_data)
        return profile

Поскольку вы не указали свой models.py, я использую Profile в качестве названия модели здесь. Обязательно замените его, если он отличается от вашего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...