Jud*_*ing 3 python django django-rest-framework
我做了一个序列化程序,并且Booking在验证POST数据之后,尝试从序列化程序中的booking字段创建一个实例。但是,由于Booking对象具有外键,因此出现错误:
ValueError:无法分配“ 4”:“ Booking.activity”必须是“ Activity”实例。
这是我的视图功能:
@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()
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
从嵌套序列化器创建模型实例的正确方法是什么?
小智 5
model_obj = serializer.save()
Run Code Online (Sandbox Code Playgroud)
model_obj保存模型实例,您可以相应地执行操作。或者您可以编写create()或update()在官方文档中提到的方法
反序列化对象:
https://www.django-rest-framework.org/api-guide/serializers/#deserializing-objects
| 归档时间: |
|
| 查看次数: |
9787 次 |
| 最近记录: |