[Django] restframeworkのserializerの書き下しをサボる


restframeworkを使ってシンプルなCRUDをするサーバーを建てるとき、単純にDBと一対一対応するシリアライザはこのようにすればいちいち書き下さなくて済む。


from django.db import models
from rest_framework import serializers

from my_app.models import Company # 開発するアプリで使うモデル

def _create_vanilla_serializer(
        table_cls: Type[models.Model]) -> Type[serializers.ModelSerializer]:

    def _list_field_names(table_cls):
        return tuple(map(lambda f: f.name, table_cls._meta.fields))

    class VanillaSerializer(serializers.ModelSerializer):
        class Meta:
            model = table_cls
            fields = _list_field_names(table_cls)

    return VanillaSerializer

CompanySerializer = _create_vanilla_serializer(Company)