Django Restframeworkを使ってAPIを書くとコードの記述量が少なくて良いのですが、ネストしたオブジェクトの更新が煩雑になる点がちょっと不満です。ネストしたオブジェクトの更新をしようとすると途端に記述量が増えます。
実際、公式ドキュメントを見ると、
def create(self, validated_data): tracks_data = validated_data.pop('tracks') album = Album.objects.create(**validated_data) for track_data in tracks_data: Track.objects.create(album=album, **track_data) return album
とあります。ForeignKeyフィールドであるtracksをpopしてからcreateする必要があります。updateも同様。これはイマイチ。。。
と思っていた所以下のパッケージがあったので使ってみました。 github.com
確認コードはこちら。 簡単に動かしてみた限りでは便利そうです。
今回のコードはこちらに置いてあります。 https://github.com/koty/drf_writable_nested_sample
時間をみつけて、いろんなパターンを試してみたいと思います。