如何从传递对象ID角度.js前往Django Rest Fram

2024-03-28 23:02:21 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Django Rest Framework,我定义了两个序列化程序:

class ServiceSerializer(serializers.ModelSerializer):
    class Meta:
        model = ServiceType
        fields = '__all__'

class CompanyShortListSerializer(serializers.ModelSerializer):

    services = ServiceSerializer(many=True)

    class Meta:
        model = Company
        fields = ( 'id','name', 'address', 'cost_per_patient', 'cost_per_month', 'renting_fee', 'services')

其中ServiceType模型由三个字段组成:

^{pr2}$

不用提公司模式了,这里不重要。在

使用Angular我想更新公司,例如从定义的公司删除给定的服务。在

我的数据$http.PUT与服务相关的内容如下:

services:Array[3]
    0:Object
        $$hashKey:"object:26"
        company:49
        id:67
        serviceName:"Terapia"
        servicePrice:100
        __proto__:Object
   *ommitting the others for brevity*

等等

请注意,id是在这个对象中发送的。但是,当我尝试这样做时:

 def update(self, instance, validated_data):
    # Updates and exisitng Company with several services 
    instance.name = validated_data['name']
    instance.address = validated_data['address']
    instance.cost_per_patient = validated_data['cost_per_patient']
    instance.renting_fee = validated_data['renting_fee']

    # create or update page instances that are in the request
    for service in validated_data['services']:
        updatedService = ServiceType(id=service['id'], serviceName = service['serviceName'], servicePrice = service['servicePrice'], company=instance)
        updatedService.save()

    return instance

id=service['id']创建错误,因为service不包含id字段。此函数接收到的是这样的有序字典:

[ 
OrderedDict([(u'serviceName', u'Terapia'), (u'servicePrice', 100.0), (u'company ', <Company: Test 1>)]), 
OrderedDict([(u'serviceName', u'Terapia par'), (u'servicePrice', 150.0), (u'company', <Company: Test 1>)]), 
OrderedDict([(u'serviceName ', u'Terapia po angielsku'), (u'servicePrice', 120.0), (u'company', <Company: Test 1>)])
] 

怎么了-为什么ID没有传递给序列化程序,以及如何修复它? 提前感谢您的帮助!在


Tags: instancenameiddataaddressservicepricecompany