使用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没有传递给序列化程序,以及如何修复它? 提前感谢您的帮助!在
在仔细分析了这一点之后,我开始了一个关于序列化器和id字段的新问题,这个问题可以看到here,我基本上设法最终解决了:)Ufff!在
相关问题 更多 >
编程相关推荐