Проверка полей с помощью 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'."
Кто-нибудь знает, что означает эта ошибка и как ее решить? Я не понимаю, как это возможно, что операторы печати работают, как ожидалось, но я все равно получаю ключевую ошибку.