フィールドオプション
次の引数は、すべてのフィールドタイプで使用できます。 すべてオプションです。
null
- Field.null
True
の場合、Djangoは空の値をNULL
としてデータベースに保存します。 デフォルトはFalse
です。
CharField や TextField などの文字列ベースのフィールドで null を使用することは避けてください。 文字列ベースのフィールドにnull=True
がある場合、それは「データなし」の2つの可能な値があることを意味します:NULL
と空の文字列。 ほとんどの場合、「データなし」に2つの可能な値を設定することは冗長です。 Djangoの規則では、NULL
ではなく、空の文字列を使用します。 1つの例外は、 CharField にunique=True
とblank=True
の両方が設定されている場合です。 この状況では、空白の値で複数のオブジェクトを保存するときに一意の制約違反を回避するために、null=True
が必要です。
null パラメータはデータベースストレージにのみ影響するため、文字列ベースのフィールドと非文字列ベースのフィールドの両方で、フォームに空の値を許可する場合は、blank=True
も設定する必要があります( 空白を参照)。
ノート
Oracleデータベースバックエンドを使用する場合、値NULL
は、この属性に関係なく、空の文字列を示すために格納されます。
blank
- Field.blank
True
の場合、フィールドは空白にすることができます。 デフォルトはFalse
です。
これは null とは異なることに注意してください。 null は純粋にデータベース関連ですが、 blank は検証関連です。 フィールドにblank=True
がある場合、フォームの検証では空の値を入力できます。 フィールドにblank=False
がある場合、そのフィールドは必須です。
choices
- Field.choices
正確に2つのアイテムの反復可能オブジェクトで構成されるシーケンス(例: [(A, B), (A, B) ...]
)このフィールドの選択肢として使用します。 選択肢が指定されている場合、それらはモデル検証によって適用され、デフォルトのフォームウィジェットは、標準のテキストフィールドではなく、これらの選択肢を含む選択ボックスになります。
各タプルの最初の要素はモデルに設定される実際の値であり、2番目の要素は人間が読める名前です。 例えば:
一般に、モデルクラス内で選択肢を定義し、値ごとに適切な名前の定数を定義するのが最善です。
モデルクラスの外部で選択肢リストを定義して参照することもできますが、モデルクラス内の各選択肢の選択肢と名前を定義すると、そのすべての情報がそれを使用するクラスに保持され、選択肢を簡単に参照できるようになります(たとえば、Student.SOPHOMORE
は、Student
モデルがインポートされている場所であればどこでも機能します)。
利用可能な選択肢を、組織的な目的で使用できる名前付きグループに収集することもできます。
各タプルの最初の要素は、グループに適用する名前です。 2番目の要素は、2タプルの反復可能であり、各2タプルには、オプションの値と人間が読める形式の名前が含まれています。 グループ化されたオプションは、単一のリスト内でグループ化されていないオプションと組み合わせることができます(この例の不明オプションなど)。
choices が設定されているモデルフィールドごとに、Djangoはフィールドの現在の値の人間が読める名前を取得するメソッドを追加します。 データベースAPIドキュメントの get_FOO_display()を参照してください。
選択肢は任意のシーケンスオブジェクトである可能性があることに注意してください。必ずしもリストやタプルである必要はありません。 これにより、選択肢を動的に構築できます。 ただし、 choices を動的にハッキングしていることに気付いた場合は、 ForeignKey を使用して適切なデータベーステーブルを使用することをお勧めします。 choices は、変更がほとんどない静的データを対象としています。
ノート
choices
の順序が変更されるたびに、新しい移行が作成されます。
blank = False が default とともにフィールドに設定されていない限り、"---------"
を含むラベルが選択ボックスでレンダリングされます。 この動作をオーバーライドするには、None
を含むタプルをchoices
に追加します。 例えば (None, 'Your String For Display')
。 または、None
の代わりに空の文字列を使用することもできます。これは、 CharField のように意味があります。
db_column
- Field.db_column
このフィールドに使用するデータベース列の名前。 これが指定されていない場合、Djangoはフィールドの名前を使用します。
データベースの列名がSQLの予約語である場合、またはPython変数名で許可されていない文字(特にハイフン)が含まれている場合は問題ありません。 Djangoは、舞台裏で列とテーブルの名前を引用しています。
db_index
- Field.db_index
True
の場合、このフィールドのデータベースインデックスが作成されます。
default
- Field.default
フィールドのデフォルト値。 これは、値または呼び出し可能オブジェクトにすることができます。 呼び出し可能であれば、新しいオブジェクトが作成されるたびに呼び出されます。
デフォルトは可変オブジェクト(モデルインスタンス、list
、set
など)にすることはできません。そのオブジェクトの同じインスタンスへの参照がすべてのデフォルト値として使用されるためです。新しいモデルインスタンス。 代わりに、必要なデフォルトを呼び出し可能ファイルでラップします。 たとえば、 JSONField にデフォルトのdict
を指定する場合は、次の関数を使用します。
lambda
は、移行によってシリアル化できないため、default
のようなフィールドオプションには使用できません。 その他の注意事項については、そのドキュメントを参照してください。
モデルインスタンスにマップする ForeignKey のようなフィールドの場合、デフォルトは、モデルインスタンスではなく、参照するフィールドの値( to_field が設定されていない場合はpk
)である必要があります。
デフォルト値は、新しいモデルインスタンスが作成され、フィールドに値が指定されていない場合に使用されます。 フィールドが主キーの場合、フィールドがNone
に設定されている場合もデフォルトが使用されます。
editable
- Field.editable
False
の場合、フィールドは管理者またはその他の ModelForm に表示されません。 モデルの検証の間もスキップされます。 デフォルトはTrue
です。
error_messages
- Field.error_messages
error_messages
引数を使用すると、フィールドで発生するデフォルトのメッセージを上書きできます。 オーバーライドするエラーメッセージに一致するキーを使用して辞書を渡します。
エラーメッセージキーには、null
、blank
、invalid
、invalid_choice
、unique
、unique_for_date
があります。 以下のフィールドタイプセクションでは、フィールドごとに追加のエラーメッセージキーが指定されています。
これらのエラーメッセージは、多くの場合、フォームに伝播されません。 モデルのerror_messages に関する考慮事項を参照してください。
help_text
- Field.help_text
フォームウィジェットで表示される追加の「ヘルプ」テキスト。 フィールドがフォームで使用されていない場合でも、ドキュメントに役立ちます。
この値は、自動生成された形式ではではなく HTMLエスケープされることに注意してください。 これにより、必要に応じて help_text にHTMLを含めることができます。 例えば:
または、プレーンテキストと django.utils.html.escape()を使用して、HTMLの特殊文字をエスケープすることもできます。 クロスサイトスクリプティング攻撃を回避するために、信頼できないユーザーから送信される可能性のあるヘルプテキストを必ずエスケープしてください。
primary_key
- Field.primary_key
True
の場合、このフィールドはモデルの主キーです。
モデルのどのフィールドにもprimary_key=True
を指定しない場合、Djangoは主キーを保持するために AutoField を自動的に追加するため、primary_key=True
を設定する必要はありません。 ]デフォルトの主キーの動作をオーバーライドする場合を除き、任意のフィールドで。 詳細については、自動主キーフィールドを参照してください。
primary_key=True
は、 null = False および unique = True を意味します。 オブジェクトで許可される主キーは1つだけです。
主キーフィールドは読み取り専用です。 既存のオブジェクトの主キーの値を変更して保存すると、古いオブジェクトと一緒に新しいオブジェクトが作成されます。
unique_for_month
- Field.unique_for_month
unique_for_date と同様ですが、フィールドは月に関して一意である必要があります。
verbose_name
- Field.verbose_name
フィールドの人間が読める名前。 詳細な名前が指定されていない場合、Djangoはフィールドの属性名を使用して自動的に作成し、アンダースコアをスペースに変換します。 詳細フィールド名を参照してください。
validators
- Field.validators
このフィールドに対して実行するバリデーターのリスト。 詳細については、バリデーターのドキュメントを参照してください。
ルックアップの登録とフェッチ
Field
は、ルックアップ登録API を実装します。 APIを使用して、フィールドクラスで使用できるルックアップ、およびフィールドからルックアップをフェッチする方法をカスタマイズできます。
フィールドタイプ
AutoField
- class AutoField(**options)
使用可能なIDに従って自動的にインクリメントする IntegerField 。 通常、これを直接使用する必要はありません。 特に指定しない場合、主キーフィールドはモデルに自動的に追加されます。 自動主キーフィールドを参照してください。
BigAutoField
- class BigAutoField(**options)
1
から9223372036854775807
までの数値に適合することが保証されていることを除いて、 AutoField によく似た64ビット整数。
BigIntegerField
- class BigIntegerField(**options)
[X101X] から9223372036854775807
までの数値に適合することが保証されていることを除いて、 IntegerField によく似た64ビット整数。 このフィールドのデフォルトのフォームウィジェットは TextInput です。
BinaryField
- class BinaryField(max_length=None, **options)
生のバイナリデータを格納するフィールド。 bytes
、bytearray
、またはmemoryview
を割り当てることができます。
デフォルトでは、BinaryField
は編集可能をFalse
に設定します。この場合、 ModelForm に含めることはできません。
バージョン2.1で変更:古いバージョンでは、editable
をTrue
に設定できません。
BinaryField
には、オプションの引数が1つ追加されています。
- BinaryField.max_length
- フィールドの最大長(文字数)。 最大長は、 MaxLengthValidator を使用したDjangoの検証で適用されます。
虐待BinaryField
データベースにファイルを保存することを考えるかもしれませんが、99 % o fの場合は設計が悪いと考えてください。 このフィールドは、適切な静的ファイル処理の代わりにではありません。
CharField
- class CharField(max_length=None, **options)
小さいサイズから大きいサイズの文字列用の文字列フィールド。
大量のテキストの場合は、 TextField を使用してください。
このフィールドのデフォルトのフォームウィジェットは TextInput です。
CharField には、追加の必須引数が1つあります。
- CharField.max_length
- フィールドの最大長(文字数)。 max_lengthは、データベースレベルで、 MaxLengthValidator を使用したDjangoの検証で適用されます。
ノート
複数のデータベースバックエンドに移植可能でなければならないアプリケーションを作成している場合、一部のバックエンドではmax_length
に制限があることに注意する必要があります。 詳細については、データベースバックエンドノートを参照してください。
DateField
- class DateField(auto_now=False, auto_now_add=False, **options)
Pythonではdatetime.date
インスタンスで表される日付。 いくつかの追加のオプションの引数があります。
- DateField.auto_now
オブジェクトが保存されるたびに、フィールドが自動的に[今すぐ]に設定されます。 「最終変更」タイムスタンプに役立ちます。 現在の日付は常にが使用されていることに注意してください。 オーバーライドできるのはデフォルト値だけではありません。
このフィールドは、 Model.save()を呼び出したときにのみ自動的に更新されます。 QuerySet.update()などの他の方法で他のフィールドを更新する場合、フィールドは更新されませんが、そのような更新でフィールドのカスタム値を指定することはできます。
- DateField.auto_now_add
- オブジェクトが最初に作成されたときに、フィールドを自動的に[今]に設定します。 タイムスタンプの作成に役立ちます。 現在の日付は常にが使用されていることに注意してください。 オーバーライドできるのはデフォルト値だけではありません。 したがって、オブジェクトの作成時にこのフィールドに値を設定しても、無視されます。 このフィールドを変更できるようにする場合は、
auto_now_add=True
の代わりに次のように設定します。
このフィールドのデフォルトのフォームウィジェットは TextInput です。 管理者は、JavaScriptカレンダーと、「今日」のショートカットを追加します。 追加のinvalid_date
エラーメッセージキーが含まれています。
オプションauto_now_add
、auto_now
、およびdefault
は相互に排他的です。 これらのオプションを任意に組み合わせると、エラーが発生します。
ノート
現在実装されているように、auto_now
またはauto_now_add
をTrue
に設定すると、フィールドにeditable=False
およびblank=True
が設定されます。
ノート
auto_now
およびauto_now_add
オプションは、作成時または更新時に常にデフォルトのタイムゾーンの日付を使用します。 別のものが必要な場合は、auto_now
またはauto_now_add
を使用する代わりに、独自の呼び出し可能なデフォルトを使用するか、save()
をオーバーライドすることを検討してください。 または、DateField
の代わりにDateTimeField
を使用して、表示時間に日時から日付への変換を処理する方法を決定します。
DateTimeField
- class DateTimeField(auto_now=False, auto_now_add=False, **options)
Pythonではdatetime.datetime
インスタンスで表される日付と時刻。 DateField と同じ追加の引数を取ります。
このフィールドのデフォルトのフォームウィジェットは、単一の TextInput です。 管理者は、JavaScriptショートカットを備えた2つの別々の TextInput ウィジェットを使用します。
DecimalField
- class DecimalField(max_digits=None, decimal_places=None, **options)
PythonではDecimal
インスタンスで表される固定精度の10進数。 DecimalValidator を使用して入力を検証します。
2つの必須引数があります。
- DecimalField.max_digits
- 数値で許可される最大桁数。 この数は
decimal_places
以上である必要があることに注意してください。
- DecimalField.decimal_places
- 数値とともに格納する小数点以下の桁数。
たとえば、小数点以下2桁の解像度で999
までの数値を格納するには、次を使用します。
また、小数点以下10桁の解像度で、最大約10億の数値を格納するには:
このフィールドのデフォルトのフォームウィジェットは、 localize がFalse
の場合は NumberInput 、それ以外の場合は TextInput です。
DurationField
- class DurationField(**options)
期間を保存するためのフィールド-Pythonでtimedelta
によってモデル化されています。 PostgreSQLで使用する場合、使用されるデータ型はinterval
であり、Oracleではデータ型はINTERVAL DAY(9) TO SECOND(6)
です。 それ以外の場合は、マイクロ秒のbigint
が使用されます。
ノート
DurationField
を使用した算術演算はほとんどの場合機能します。 ただし、PostgreSQL以外のすべてのデータベースでは、DurationField
の値をDateTimeField
インスタンスの算術演算と比較しても期待どおりに機能しません。
FileField
- class FileField(upload_to=None, max_length=100, **options)
ファイルアップロードフィールド。
ノート
primary_key
引数はサポートされておらず、使用するとエラーが発生します。
2つのオプションの引数があります。
- FileField.upload_to
この属性は、アップロードディレクトリとファイル名を設定する方法を提供し、2つの方法で設定できます。 どちらの場合も、値は Storage.save()メソッドに渡されます。
文字列値を指定すると、strftime()
形式が含まれる場合があります。これは、ファイルのアップロードの日付/時刻に置き換えられます(アップロードされたファイルが指定されたディレクトリをいっぱいにしないようにするため)。 例えば:
デフォルトの FileSystemStorage を使用している場合、文字列値が:setting: `MEDIA_ROOT` パスに追加され、アップロードされたファイルが保存されるローカルファイルシステム上の場所が形成されます。 別のストレージを使用している場合は、そのストレージのドキュメントをチェックして、upload_to
の処理方法を確認してください。
upload_to
は、関数などの呼び出し可能でもあります。 これは、ファイル名を含むアップロードパスを取得するために呼び出されます。 この呼び出し可能オブジェクトは、2つの引数を受け入れ、ストレージシステムに渡されるUnixスタイルのパス(スラッシュ付き)を返す必要があります。 2つの引数は次のとおりです。
引数
|
説明
|
instance
|
FileField が定義されているモデルのインスタンス。 より具体的には、これは現在のファイルが添付されている特定のインスタンスです。
ほとんどの場合、このオブジェクトはまだデータベースに保存されていないため、デフォルトのAutoField 、を使用する場合、主キーフィールドの値がまだない可能性があります。
|
filename
|
ファイルに最初に付けられたファイル名。 これは、最終的な宛先パスを決定するときに考慮される場合と考慮されない場合があります。
|
例えば:
- FileField.storage
- ファイルの保存と取得を処理するストレージオブジェクト。 このオブジェクトを提供する方法の詳細については、ファイルの管理を参照してください。
このフィールドのデフォルトのフォームウィジェットは ClearableFileInput です。
モデルで FileField または ImageField (以下を参照)を使用するには、いくつかの手順を実行します。
- 設定ファイルで、:setting: `MEDIA_ROOT` を、アップロードされたファイルをDjangoに保存するディレクトリへのフルパスとして定義する必要があります。 (パフォーマンスのために、これらのファイルはデータベースに保存されません。):setting: `MEDIA_URL` をそのディレクトリのベースパブリックURLとして定義します。 このディレクトリがWebサーバーのユーザーアカウントによって書き込み可能であることを確認してください。
- FileField または ImageField をモデルに追加し、 upload_to オプションを定義して、使用する:setting: `MEDIA_ROOT` のサブディレクトリを指定しますアップロードされたファイルの場合。
- データベースに保存されるのは、ファイルへのパスだけです(:setting: `MEDIA_ROOT` に対して)。 Djangoが提供する便利な url 属性を使用することをお勧めします。 たとえば、 ImageField の名前が
mug_shot
の場合、テンプレート:Object.mug shot.url
を使用してテンプレート内の画像への絶対パスを取得できます。
たとえば、:setting: `MEDIA_ROOT` が'/home/media'
に設定され、 upload_to が'photos/%Y/%m/%d'
に設定されているとします。 upload_to の'%Y/%m/%d'
部分は、strftime()
フォーマットです。 '%Y'
は4桁の年、'%m'
は2桁の月、'%d'
は2桁の日です。 1月にファイルをアップロードした場合。 2007年15日、ディレクトリ/home/media/photos/2007/01/15
に保存されます。
アップロードされたファイルのディスク上のファイル名またはファイルのサイズを取得する場合は、それぞれ name 属性と size 属性を使用できます。 使用可能な属性とメソッドの詳細については、ファイルクラスリファレンスおよびファイルの管理トピックガイドを参照してください。
ノート
ファイルはデータベースへのモデルの保存の一部として保存されるため、ディスクで使用される実際のファイル名は、モデルが保存されるまで信頼できません。
アップロードされたファイルの相対URLは、 url 属性を使用して取得できます。 内部的には、これは基礎となる Storage クラスの url()メソッドを呼び出します。
アップロードされたファイルを処理するときは常に、セキュリティホールを回避するために、アップロードする場所とファイルの種類に細心の注意を払う必要があることに注意してください。 アップロードされたすべてのファイルを検証して、ファイルが思いどおりのものであることを確認します。 たとえば、誰かが検証なしでWebサーバーのドキュメントルート内のディレクトリにファイルをやみくもにアップロードするようにした場合、誰かがCGIまたはPHPスクリプトをアップロードし、サイトのURLにアクセスしてそのスクリプトを実行する可能性があります。 それを許可しないでください。
また、アップロードされたHTMLファイルでさえ、(サーバーではなく)ブラウザーで実行できるため、XSSまたはCSRF攻撃と同等のセキュリティ脅威をもたらす可能性があることにも注意してください。
FileField インスタンスは、デフォルトの最大長100文字のvarchar
列としてデータベースに作成されます。 他のフィールドと同様に、 max_length 引数を使用して最大長を変更できます。
FileFieldおよびFieldFile
- class FieldFile
モデルの FileField にアクセスすると、基になるファイルにアクセスするためのプロキシとして FieldFile のインスタンスが提供されます。
FieldFile のAPIは、 File のAPIを反映していますが、重要な違いが1つあります。クラスによってラップされるオブジェクトは、必ずしもPythonの組み込みファイルオブジェクトのラッパーではありません。[X188X ]代わりに、 Storage.open()メソッドの結果のラッパーであり、 File オブジェクトであるか、カスタムストレージの[X367Xの実装である可能性があります。 ]ファイル API。
read()
やwrite()
などの File から継承されたAPIに加えて、 FieldFile には、基になるファイルとの対話に使用できるいくつかのメソッドが含まれています:
警告
このクラスの2つのメソッド、 save()と delete()は、デフォルトで、関連付けられたFieldFile
のモデルオブジェクトをデータベースに保存します。
- FieldFile.name
関連する FileField の Storage のルートからの相対パスを含むファイルの名前。
- FieldFile.size
基になる Storage.size()メソッドの結果。
- FieldFile.url
基になる Storage クラスの url()メソッドを呼び出して、ファイルの相対URLにアクセスするための読み取り専用プロパティ。
- FieldFile.open(mode='rb')
指定されたmode
で、このインスタンスに関連付けられているファイルを開くか、再度開きます。 標準のPython open()
メソッドとは異なり、ファイル記述子を返しません。
基になるファイルは、アクセス時に暗黙的に開かれるため、基になるファイルへのポインタをリセットするか、mode
を変更する場合を除いて、このメソッドを呼び出す必要がない場合があります。
- FieldFile.close()
標準のPython file.close()
メソッドのように動作し、このインスタンスに関連付けられているファイルを閉じます。
- FieldFile.save(name, content, save=True)
このメソッドは、ファイル名とファイルの内容を受け取り、それらをフィールドのストレージクラスに渡し、保存されたファイルをモデルフィールドに関連付けます。 ファイルデータをモデル上の FileField インスタンスに手動で関連付ける場合は、save()
メソッドを使用してそのファイルデータを永続化します。
ファイルの名前であるname
と、ファイルの内容を含むオブジェクトであるcontent
の2つの必須引数を取ります。 オプションのsave
引数は、このフィールドに関連付けられたファイルが変更された後にモデルインスタンスを保存するかどうかを制御します。 デフォルトはTrue
です。
content
引数は、Pythonの組み込みファイルオブジェクトではなく、 django.core.files.File のインスタンスである必要があることに注意してください。 次のように、既存のPythonファイルオブジェクトから File を作成できます。
または、次のようにPython文字列から作成できます。
詳細については、ファイルの管理を参照してください。
- FieldFile.delete(save=True)
このインスタンスに関連付けられているファイルを削除し、フィールドのすべての属性をクリアします。 注:このメソッドは、delete()
が呼び出されたときにファイルが開いている場合、ファイルを閉じます。
オプションのsave
引数は、このフィールドに関連付けられたファイルが削除された後にモデルインスタンスを保存するかどうかを制御します。 デフォルトはTrue
です。
モデルが削除されても、関連ファイルは削除されないことに注意してください。 孤立したファイルをクリーンアップする必要がある場合は、自分で処理する必要があります(たとえば、手動で実行したり、たとえばを介して定期的に実行するようにスケジュールしたりできるカスタム管理コマンドを使用して) cron)。
FilePathField
- class FilePathField(path=None, match=None, recursive=False, max_length=100, **options)
CharField の選択肢は、ファイルシステム上の特定のディレクトリ内のファイル名に限定されています。 3つの特別な引数があり、そのうちの最初の引数は必須です。
- FilePathField.path
- 必須。 この FilePathField が選択を取得するディレクトリへの絶対ファイルシステムパス。 例:
"/home/images"
。
- FilePathField.match
- オプション。 FilePathField がファイル名のフィルタリングに使用する文字列としての正規表現。 正規表現は、フルパスではなくベースファイル名に適用されることに注意してください。 例:
"foo.*\.txt$"
。これはfoo23.txt
というファイルと一致しますが、bar.txt
またはfoo23.png
とは一致しません。
- FilePathField.recursive
- オプション。
True
またはFalse
のいずれか。 デフォルトはFalse
です。 パスのすべてのサブディレクトリを含めるかどうかを指定します
- FilePathField.allow_files
- オプション。
True
またはFalse
のいずれか。 デフォルトはTrue
です。 指定した場所にあるファイルを含めるかどうかを指定します。 これまたは allow_folders はTrue
である必要があります。
- FilePathField.allow_folders
- オプション。
True
またはFalse
のいずれか。 デフォルトはFalse
です。 指定した場所のフォルダーを含めるかどうかを指定します。 これまたは allow_files はTrue
である必要があります。
もちろん、これらの引数は一緒に使用できます。
潜在的な落とし穴の1つは、 match がフルパスではなく、ベースファイル名に適用されることです。 したがって、この例:
… match はベースファイル名(foo.png
およびbar.png
)に適用されるため、/home/images/foo.png
と一致しますが、/home/images/foo/bar.png
とは一致しません。
FilePathField インスタンスは、デフォルトの最大長100文字のvarchar
列としてデータベースに作成されます。 他のフィールドと同様に、 max_length 引数を使用して最大長を変更できます。
FloatField
- class FloatField(**options)
Pythonでfloat
インスタンスによって表される浮動小数点数。
このフィールドのデフォルトのフォームウィジェットは、 localize がFalse
の場合は NumberInput 、それ以外の場合は TextInput です。
FloatField
対。 DecimalField
FloatField クラスが DecimalField クラスと混同されることがあります。 どちらも実数を表しますが、それらの数は異なります。 FloatField
はPythonのfloat
タイプを内部的に使用し、DecimalField
はPythonのDecimal
タイプを使用します。 2つの違いについては、decimal
モジュールに関するPythonのドキュメントを参照してください。
ImageField
- class ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)
FileField からすべての属性とメソッドを継承しますが、アップロードされたオブジェクトが有効な画像であることも検証します。
FileField で使用できる特別な属性に加えて、 ImageField にはheight
およびwidth
属性もあります。
これらの属性のクエリを容易にするために、 ImageField には2つの追加のオプション引数があります。
- ImageField.height_field
- モデルインスタンスが保存されるたびに画像の高さが自動入力されるモデルフィールドの名前。
- ImageField.width_field
- モデルインスタンスが保存されるたびに画像の幅が自動入力されるモデルフィールドの名前。
枕ライブラリが必要です。
ImageField インスタンスは、デフォルトの最大長100文字のvarchar
列としてデータベースに作成されます。 他のフィールドと同様に、 max_length 引数を使用して最大長を変更できます。
このフィールドのデフォルトのフォームウィジェットは ClearableFileInput です。
GenericIPAddressField
- class GenericIPAddressField(protocol='both', unpack_ipv4=False, **options)
文字列形式のIPv4またはIPv6アドレス(例: 192.0.2.30
または2a02:42fe::4
)。 このフィールドのデフォルトのフォームウィジェットは TextInput です。
IPv6アドレスの正規化は、 RFC 4291#section-2.2 セクション2.2に従います。これには、::ffff:192.0.2.0
などのセクションの段落3で提案されているIPv4形式の使用も含まれます。 たとえば、2001:0::0:01
は2001::1
に正規化され、::ffff:0a0a:0a0a
は::ffff:10.10.10.10
に正規化されます。 すべての文字は小文字に変換されます。
- GenericIPAddressField.protocol
- 有効な入力を指定されたプロトコルに制限します。 受け入れられる値は、
'both'
(デフォルト)、'IPv4'
、または'IPv6'
です。 マッチングでは大文字と小文字は区別されません。
- GenericIPAddressField.unpack_ipv4
::ffff:192.0.2.1
のようなIPv4マップアドレスを解凍します。 このオプションを有効にすると、そのアドレスは192.0.2.1
に解凍されます。 デフォルトは無効です。 protocol
が'both'
に設定されている場合にのみ使用できます。
空白値を許可する場合、空白値はnullとして格納されるため、null値を許可する必要があります。
NullBooleanField
- class NullBooleanField(**options)
BooleanField とnull=True
のように。 Djangoの将来のバージョンで非推奨になる可能性があるため、このフィールドの代わりにこれを使用してください。
PositiveIntegerField
- class PositiveIntegerField(**options)
IntegerField と同様ですが、正またはゼロ(0
)である必要があります。 0
から2147483647
までの値は、Djangoでサポートされているすべてのデータベースで安全です。 値0
は、下位互換性の理由から受け入れられます。
PositiveSmallIntegerField
- class PositiveSmallIntegerField(**options)
PositiveIntegerField と同様ですが、特定の(データベースに依存する)ポイントの下の値のみを許可します。 0
から32767
までの値は、Djangoでサポートされているすべてのデータベースで安全です。
SlugField
- class SlugField(max_length=50, **options)
Slug は新聞用語です。 スラッグは何かの短いラベルであり、文字、数字、アンダースコア、またはハイフンのみが含まれます。 それらは一般的にURLで使用されます。
CharFieldと同様に、 max_length を指定できます(そのセクションのデータベースの移植性と max_length に関する注記も読んでください)。 max_length が指定されていない場合、Djangoはデフォルトの長さ50を使用します。
Field.db_index をTrue
に設定することを意味します。
他の値の値に基づいてSlugFieldを自動的に事前入力すると便利なことがよくあります。 prepopulated_fields を使用して、管理者でこれを自動的に行うことができます。
検証には validate_slug または validate_unicode_slug を使用します。
- SlugField.allow_unicode
True
の場合、フィールドはASCII文字に加えてUnicode文字を受け入れます。 デフォルトはFalse
です。
SmallIntegerField
- class SmallIntegerField(**options)
IntegerField と同様ですが、特定の(データベースに依存する)ポイントの下の値のみを許可します。 -32768
から32767
までの値は、Djangoでサポートされているすべてのデータベースで安全です。
TextField
- class TextField(**options)
大きなテキストフィールド。 このフィールドのデフォルトのフォームウィジェットは Textarea です。
max_length
属性を指定すると、自動生成されたフォームフィールドの Textarea ウィジェットに反映されます。 ただし、モデルまたはデータベースレベルでは適用されません。 そのためには CharField を使用してください。
TimeField
- class TimeField(auto_now=False, auto_now_add=False, **options)
Pythonではdatetime.time
インスタンスで表される時間。 DateField と同じ自動入力オプションを受け入れます。
このフィールドのデフォルトのフォームウィジェットは TextInput です。 管理者はいくつかのJavaScriptショートカットを追加します。