DRF3 M2M 嵌套序列化程序删除 update() 上的嵌套'id'字段



我正在尝试创建一个功能齐全的M2M(通过表)嵌套序列化程序,它在create()上非常有效。但是,当我获取包含嵌套记录的id的GET版本的序列化程序返回的JSON,并对同一个序列化程序执行PUT时,"id"字段在它到达update()方法时会从嵌套记录validate_data中删除。

{
"id": 1, 
"addresses": [
    {
        "id": 1,  # This is ripped out
        "city": "Oakville", 
        "addr": "13 Main St", 
        "postal_code": "01101"
    }, 
    {
        "id": 2,  # This is ripped out
        "city": "Watertown", 
        "addr": "88 Main St", 
        "postal_code": "01101"
    }, 
    "customer_number": 1234, 
    "customer_type": 1, 
    "pricing_sequence": 2, 
    "name": "Customer number 1234"
 }

有什么想法吗?

是的,这是django-rest框架的副本:DATA-don';t更新型号ID

我想我想通了。ModelSerializer似乎默认情况下会将"id"字段设为只读。解决方案是向序列化程序中添加显式的"id"字段。参见tomchristie的评论https://github.com/tomchristie/django-rest-framework/issues/2114

最新更新