自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【DRF】Django Rest Frameworkでリスト型のバリデーションも行う【UUIDや文字列を格納したリスト型のバリデーションに】

thumbnail

例えば、Ajaxを使用して複数選択削除を行いたい場合、idもしくはuuidのリスト型をサーバーサイドに送信することになるだろう。

そういう時、DjangoRESTFramework(以下DRF)のシリアライザを使用すると良いだろう。

UUIDを含むリスト型をバリデーションする

#複数選択削除で利用
class UUIDListSerializer(serializers.Serializer):

    id_list = serializers.ListField( child=serializers.UUIDField() )

これで実現できる。

DjangoのFormクラスで実現させる場合。

リスト型で送られてくるデータの参照は、

request.POST.getlist("key")

などで参照しなければならないため、ループで1つずつバリデーションしなければならない。

つまり、

class UUIDForm(forms):
    uuid    = forms.UUIDField()

uuid_list   = request.POST.getlist(uuid)

for uuid in uuid_list:
    form    = UUIDForm({ "uuid":uuid })
    if form.is_valid():
        print("バリデーションOK")
        #TODO:ここにやりたい処理を書く

とする必要がある。デフォルトのDjangoのFormクラスでは一回でバリデーションが済まない。

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ