Django CharFieldとTextFieldの違いとは?

Djangoのモデルに設定するフィールドには文字列を表す、CharFieldとTextFieldがあります。

今回は、CharFieldとTextFieldの違いを紹介します。

CharField(max_length = None, **options)

  • 短〜長文向けのテキストのフィールドです。
  • デフォルトのフォームウィジェットは TextInput です。
  • 引数のmax_lengthは必須です。フィールドの最大文字数を設定します。この制限はDBに適用され、DjangoではMaxLengthValidatorを使って検証します。

TextField(**options)

  • 長文向けのテキストのフィールドです。
  • デフォルトのフォームウィジェットは Textarea です。
  • max_lengthは任意です。設定すると自動生成されるフィールドのTextareaウィジェット内に反映されますが、モデルやDBには適用されません。

共通点

どちらもDBではVARCHAR型として作成されます。

私がCharFieldとTextFieldを選ぶ基準は、フォームのウィジェットでTextInputを使いたいか、Textareaを使いたいかどうかで選んでいます。

スポンサーリンク
スポンサーリンク