@kotyのブログ

PythonとかAWSとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

drf_writable_nestedを試してみた

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

時間をみつけて、いろんなパターンを試してみたいと思います。