Проверка полей с помощью PrimaryKeyRelatedField

Я работаю с сериализатором DRF, который включает поле с PrimaryKeyRealtedField.

import stripe
from rest_framework import serializers
from subscriptions.models.subscription_product import SubscriptionProduct

class SubscriptionCheckoutSessionSerializer(serializers.Serializer):
   url = serializers.CharField(read_only=True)
   success_url = serializers.CharField(write_only=True, required=False)
   cancel_url = serializers.CharField(write_only=True, required=False)
   subscription_product = serializers.PrimaryKeyRelatedField(
    queryset=SubscriptionProduct.objects.all()
   )

def create(self, validated_data):
    print(validated_data)
    subscription_product = validated_data["subscription_product"]
    print(subscription_product)
    stripe_price = subscription_product.stripe_price
    print(stripe_price)
    print(stripe_price.stripe_id)
    session = stripe.checkout.Session.create(
        success_url=validated_data.get("success_url", None),
        cancel_url=validated_data.get("cancel_url", None),
        mode="subscription",
        line_items=[
            {
                "price": stripe_price.stripe_id,
                "quantity": 1,
            }
        ],
    )
    print(session)
    return session

Все операторы печати выводят ожидаемый результат, и созданная сессия является действительной. Однако я получаю код состояния 500 со следующей ошибкой: KeyError: "Получена ошибка KeyError при попытке получить значение для поля subscription_product на сериализаторе SubscriptionCheckoutSessionSerializer.\nПоле сериализатора может быть названо неправильно и не соответствовать какому-либо атрибуту или ключу на экземпляре Session.\nОригинальный текст исключения был: 'subscription_product'."

Кто-нибудь знает, что означает эта ошибка и как ее решить? Я не понимаю, как это возможно, что операторы печати работают, как ожидалось, но я все равно получаю ключевую ошибку.

Вернуться на верх