DjangoのCharField()
とTextField()
の違いは何ですか? documentationには、小さな文字列にはCharField()
を使用し、大きい文字列にはTextField()
を使用する必要があります。さて、「小さい」と「大きい」の間に線が引かれる場所はどこですか?この事件の原因となっているボンネットの下で何が起こっているのですか?Django CharField vs TextField
答えて
RDBMSのvarchar
(またはそれに類するもの)との違い - 通常は最大長で指定され、パフォーマンスやストレージの点で効率的かもしれません。 - text
(またはそれに類する)タイプです。ハードコードされた実装の制限(DBスキーマではない)。
PostgreSQL 9は具体的には"There is no performance difference among these three types"ですが、AFAIKにはいくつかの違いがあります。 MySQLでは、これは覚えておいてください。
最大長を制限する必要がある場合は、CharField
を使用することをお勧めします。それ以外の場合はTextField
です。
これはDjango固有のものではありません。
場合によっては、フィールドの使用方法に結びついている場合があります。一部のDBエンジンでは、フィールドの違いにより、フィールド内のテキストの検索方法(および検索方法)が決まります。 CharFieldsは、通常、文字列 "one plus two"の "one"を検索する場合など、検索可能なものに使用されます。ストリングが短いので、エンジンの検索にかかる時間が短くなります。 TextFieldsは、通常、(ブログの本文のように)検索されることを目的としていませんが、大量のテキストを保持するためのものです。今のほとんどはDBエンジンに依存し、Postgresのように問題はありません。
ModelFormsを使用する場合は、フォームに異なるタイプの編集フィールドが表示されます。 ModelFormはCharFieldの1行のテキストとTextFieldの複数行のサイズのHTMLフォームを生成します。
たとえば、。 2つのフィールドは以下のようなモデルに追加される..
以下description = models.TextField(blank=True, null=True)
title = models.CharField(max_length=64, blank=True, null=True)
は、移行が適用されるときに実行MySQLのクエリです。 TextField
(説明)フィールドの
のように定義されているCharFieldですが255文字のMAX_LENGTHを有するlongtext
ALTER TABLE `sometable_sometable` ADD COLUMN `description` longtext NULL;
varchar(64)
ALTER TABLE `sometable_sometable` ADD COLUMN `title` varchar(64) NULL;
ALTER TABLE `sometable_sometable` ALTER COLUMN `title` DROP DEFAULT;
として定義されるCharField
(タイトル)MAX_LENGTH(必須)のためTextFieldは255文字以上を保持できます。大きな文字列を入力すると、TextFieldが使用されます。 max_lengthパラメータがTextFieldに渡されると、長さの検証がTextAreaウィジェットに渡されることを知っておいてください。
- 1. Django CharFieldの制限
- 2. Django - Admin:list_display TextField
- 3. django Charfield "\ t"をタブに変換する
- 4. Django - CharField TextInputのmax_lengthエラーメッセージを変更する
- 5. CharFieldからForeignKeyへのDjangoモデルフィールドのタイプの変更
- 6. 大文字と小文字を区別しないCharfield djangoモデル
- 7. django-shop vs Satchless?
- 8. CherryPy vs Django
- 9. Django Dajax vs Dajaxice
- 10. Django - USStateField vs USZipCodeField
- 11. ビルドアウトvs virtualenv + pip for django?
- 12. Djangoの管理者でCharFieldをチェックボックスとしてレンダリングしますか?
- 13. Djangoのフォームは、ここで、この回答に基づいてCharFieldです
- 14. ジャンゴ注釈を付ける()エラーはAttributeError:「CharFieldです」オブジェクトが
- 15. 南のDjangoのTextFieldのデフォルト値を指定する方法は?
- 16. TextFieldよりURLFieldを使用する利点?
- 17. キーボードカバーTextField
- 18. は、TextField
- 19. django sendfile with python 3.x vs 2.7
- 20. Python + Django vs. ASP.NET + C#/ VB対PHP?
- 21. djangoモジュールのインポートエラー - python 2.7 vs python 3.4
- 22. ValidateのTextFieldカスタム
- 23. JavaFX TextField EventHandler
- 24. AjaxEditableLabel TextFieldのサイズ
- 25. UIAlertView with textfield
- 26. onFocusメソッドfor textField
- 27. AS3 TextFieldフォント
- 28. Java TextField質問
- 29. AS3:TextField Focus
- 30. ExtJS 4 textfield regex
逆にCharFieldを使用する場合は、最大長を指定する必要があります。 –
デフォルトでは 'TextField'を使用するとアプリケーションの移植性に影響を与えることがわかりました。 Postgresにはパフォーマンス・ヒットはないかもしれませんが、OracleはWHERE文でフィールドを使用できないなど、いくつかの煩わしさがある 'CLOB 'として格納します。ちょうど考慮すべき何か。 – Rob
Oracleでは、 'CharField'は2000より大きい' max_length'を持つことができないか、ORA-00910:指定された長さがそのデータ型には長すぎます。 – Dinei