Как сохранить внешний ключ в таблице и получить заполненные данные в Django rest framework?

Я пытаюсь сохранить id советника в поле advisor_id в таблице Booking, но оно сохраняет нулевое значение в таблице booking, когда я использую advisor = AdvisorSerializer(read_only=True), которое я использую для заполнения данных из модели Advisor Model

serializer.py

from django.db import models
from django.db.models import fields
from rest_framework import serializers
from .models import Advisor, Booking


class AdvisorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Advisor
        fields = '__all__'

class BookingSerializer(serializers.ModelSerializer):
    advisor = AdvisorSerializer(read_only=True)
    class Meta:
        model = Booking
        fields = '__all__'

models.py

from django.db import models
from users.models import User

# Create your models here.

class Advisor(models.Model):
    name=models.CharField(max_length=255)
    photo=models.URLField()

class Booking(models.Model):
    user=models.ForeignKey(User, related_name='users', blank=True, null=True, on_delete=models.CASCADE)
    advisor=models.ForeignKey(Advisor, related_name='advisors', blank=True, null=True, on_delete=models.CASCADE)
    booking_time=models.DateField()

views.py - пост-метод для хранения данных в таблице бронирования

class bookAdvisorMeetingDate(APIView):
    def post(self, request, user_id, advisor_id):
        token = request.COOKIES.get('jwt')

        if not token:
            return Response({"success": False, "message": "UnAuthorized"}, status=status.HTTP_401_UNAUTHORIZED)

        try:
            payload = jwt.decode(token, 'secret', alogrithm=['HS256'])
        except jwt.ExpiredSignatureError:
            return Response({"success": False, "message": "UnAuthorized"}, status=status.HTTP_401_UNAUTHORIZED)

        if not str(payload['id']) == user_id:
            return Response({"success": False, "message": "UnAuthorized | You have no access to this route"}, status=status.HTTP_401_UNAUTHORIZED)
        # print(user_id, advisor_id)
        user = User.objects.filter(id=user_id).first()
        advisor = Advisor.objects.filter(id=advisor_id).first()
        print('user adn advisor', user.id, advisor.id)
        data = {**request.data, 'user': user_id, 'advisor': advisor_id}
        serializer = BookingSerializer(data=data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        

        return Response({"success": True}, status=status.HTTP_200_OK)
Вернуться на верх