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)