2016-08-19 2 views
1

Я сделал сериализатор, и я пытаюсь создать экземпляр Booking из поля бронирования в сериализаторе после проверки данных POST. Однако, поскольку Booking объект имеет внешние ключи, я получаю ошибку: ValueError: Cannot assign "4": "Booking.activity" must be a "Activity" instance.Django Rest Framework - Получение экземпляра модели после сериализации

Вот мой вид функции:

@api_view(['POST']) 
def customer_charge(request): 
    serializer = ChargeCustomerRequestSerializer(data=request.data) 
    serializer.is_valid(raise_exception=True) 

    # trying to create an instance using the ReturnDict from the serializer 
    booking = Booking(**serializer.data['booking']) 
    booking.save() 

Serializers.py где BookingSerializer является ModelSerializer

class ChargeCustomerRequestSerializer(serializers.Serializer): 
    booking = BookingSerializer() 
    customer = serializers.CharField(max_length=255) 

class BookingSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Booking 
     fields = '__all__' 
     # I wanted to view the instances with the nested information available 
     # but this breaks the serializer validation if it's just given a foreign key 
     # depth = 1 

Что это правильный способ создания экземпляра модели из вложенного сериализатора?

ответ

2

serializer.validated_data следует использовать, а не serializer.data

Смежные вопросы