Получите информацию внешнего API с использованием данных сериализатора перед созданием нового объекта в Django Rest Framework - PullRequest
0 голосов
/ 03 марта 2020

Я добавил модель профиля, связанную с моделью пользователя, в Django REST Framework.

Прежде чем создавать новый объект с помощью ModelViewSet, мне нужно создать «клиента» во внешнем API (Python запросы) с использованием информации профиля (еще не сохранено), и я хочу сохранить возвращенный идентификатор в моей модели профиля.

Теперь мой ModelViewSet выглядит следующим образом:

views.py

class ProfileViewSet(viewsets.ModelViewSet):
    serializer_class = ProfileSerializer
    permission_classes = [IsAuthenticated]

    def get_queryset(self):
        return Profile.objects.filter(user=self.request.user)

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

serializers.py

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        # fields = '__all__'
        exclude = ('user',)

Когда и как лучше всего создать внешнего клиента и передать идентификатор сериализатору?

1 Ответ

0 голосов
/ 03 марта 2020

Вы можете сделать это в execute_create:

def perform_create(self,serializer):
    response = requests.post('your request url',data={*customer_save_data*})
    if response.status_code == 200:
        customer_id = response.json()['customer_id']
        serializer.save(user=self.request.user,customer_id=customer_id)
    else:
        #you can raise exception here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...