4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

djangoのcleaned_dataについてまとめてみた

Posted at

今回のお題

今回はdjangoに用意されているcleaned_dataという変数についてまとめます。

この記事を書くに至った理由はCustomUserの実装にあたってcleaned_dataが必要だったからであり、基本的には自分用のメモとして残します。

cleaned_dataとは

まず、cleaned_dataとは何かというと、「あるオブジェクトの属性値の中でバリデーションをクリアしたものだけを辞書形式で格納したもの」になります。

具体的にみていきましょう(ソースコードのimport部分は省略しています)。

class Hoge(models.Model):
  name = models.CharField(null=False, max_length=20)
  age = IntegerField()

hoge = Hoge()
hoge.name = "hoge"
hoge.age = "30"

print(hoge.cleaned_data)
# 結果:{}
# バリデーション前なのでcleaned_dataは空

hoge.is_valid()

print(hoge.cleaned_data)
# 結果:{ "name": "hoge" }
# バリデーションをクリアしたnameのみが格納されている。

上記の例ではHogeクラスのインスタンスを作り、そこに対してバリデーションを実行しています。
ageはIntegerFieldであるにもかかわらず文字列"30"が代入されたためにcleaned_dataからはじかれています。

また、is_valid()関数が呼び出される前の時点ではcleaned_dataは空であることに気をつけてください。

終わりに

以上でcleaned_dataの解説を終わります。

この知識はCustom Userの実装過程でsaveメソッドを上書きするために必要です。

そちらについても近々まとめるのでよろしければお読みください。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?