如何在创建对象时在序列化程序的字段上动态添加`read_only = True`

时间:2017-01-17 21:26:43

标签: django django-rest-framework

我有很复杂的序列化程序(深入三级),我在两个视图中使用。对于POST和PATCH调用。

我想知道如何动态更改read_only字段上的pk属性,并考虑所执行的操作。

如果我将此数据的POST发送到endpont:

{
  "id": 93,
  "name": "Template workout",
  "items": [
    {
      "id": 74,
      "is_superset": false,
      "seq": "00002",
      "exercises": [
        {
          "id": 50,
          "exercise": {
            "id": 3,
            "title": "sprint"
          },
          "set_type": "time",
          "rest": 30,
          "sets": [
            {
              "id": 141,
              "weight": null,
              "reps": null,
              "time_interval": 30
            },
            {
              "id": 142,
              "weight": null,
              "reps": null,
              "time_interval": 40
            },
            {
              "id": 143,
              "weight": null,
              "reps": null,
              "time_interval": 50
            }
          ]
        }
      ]
    }
  ]
}

我想删除所有带有此结构值的id个键。 我认为当id为read_only=True时,通过序列化程序发送它是我最好的选择,但在更新时我确实需要id

1 个答案:

答案 0 :(得分:1)

您需要override序列化程序http://www.django-rest-framework.org/api-guide/serializers/#saving-instances上的create方法然后,在validated_data内,您需要手动保存对象。