フィールドタイプ(Field type)
AutoField
IDに基づいて自動的に拡張されるIntegerFieldフィールドです。通常、このフィールドを直接使用する必要はありません。別のフィールドに主キーを指定しない場合、Django 主キーフィールドは自動的に追加されます。
BigIntegerField
IntegerField に似た、-9223372036854775808 の範囲の 64 ビット整数 9223372036854775807まで。デフォルトのフォーム ウィジェットは TextInput です。
BooleanField
ブール値 (true/false) フィールド。
デフォルトのフォームウィジェットはCheckboxInputです。
空の値として null を使用したい場合は、NullBooleanField を使用できます。
CharField
class CharField(max_length=None[, **options])
これは文字列フィールドであり、小さい文字列と大きい文字列の両方に適しています。
大きなテキストの場合は、TextField を使用する必要があります。
デフォルトのフォームウィジェットはTextInputです。
CharField には、フィールド内の最大文字数である max_length を渡す必要があるパラメーターがあります。これはデータベース レベルと Django のデータ検証レベルの両方で機能します。
CommaSeparatedInterField
class CommaSeparatedIntegerField(max_length=None[, **オプション])
これは、コンマで区切られた整数のシーケンスを保存するために使用されます。 CharField と同様に、max_length パラメータを指定する必要があります。また、データベースごとに max_length が異なることにも注意してください。 限界。
DateField
class DateField([auto_now=False, auto_now_add=False, **オプション])
このフィールドは、Python の datetime.date インスタンスを使用して日付を表します。追加のオプション パラメーターは次のとおりです:
DateField.auto_now: オブジェクトが保存されるたびに、Django はこのフィールドの値を現在時刻に自動的に設定します。通常、「最終更新日」を意味するために使用されます。 時間。デフォルト値ではなく現在の日付が使用されるため、
がデフォルト値を上書きして保存時間を変更することはできないことに注意してください。
DateField.auto_now_add: オブジェクトが最初に作成されるとき、Django このフィールドの値を現在時刻に自動的に設定します。これは通常、オブジェクトの作成時刻を表すために使用されます。また、デフォルト値の代わりに現在の日付も使用されます。
デフォルトのフォームウィジェットはTextInputです。
注: auto_now または auto_now_add が True に設定されている場合、フィールドは editable=True およびblank=True 設定になります。
DateTimeField
class DateTimeField([auto_now=False, auto_now_add=False, **options])
このフィールドは、datetime.datetime インスタンスを使用して日付と時刻を表します。このフィールドは、DateField と同じパラメータを受け入れます。
デフォルトのフォームウィジェットはTextInputです。 Django の管理者は、JavaScript ショートカット オプションを備えた 2 つの TextInput を使用して、それぞれ日付と時刻を表します。
DecimalField
class DecimalField(max_digits=None, decimal_places=None[, **オプション])
これは、Decimal インスタンスを使用して固定精度 10 進数を表すフィールドです。 2 つの必須パラメータがあります:
DecimalField.max_digitals: 数値に許可される最大桁数
DecimalField.decimal_places: 10 進数の最大桁数
たとえば、保存される数値の最大数は 999 です。 、そして小数点以下 2 桁の場合は、次のように使用できます:
models.DecimalField(..., max_digits=5, decimal_places=2)
小数点以下 10 桁でおよそ 10 億の数字を保存するには、次のように書くだけです:
models.DecimalField(..., max_digits=19, decimal_places=10)
デフォルトのフォーム ウィジェットは TextInput です。
EmailField
class EmailField([max_length=75, **options])
これは、電子メールの正当性検出を備えた CharField です。
注: 最大長のデフォルトは 75 で、RFC3696/5321 と互換性のあるすべての電子メール アドレスを保存できるわけではありません。すべてを保存したい場合は、
max_length=254 を設定します。これを 75 に設定することは従来の問題です。
FileField
class FileField(upload_to=None[, max_length=100, **options])
ファイルアップロードフィールド
注: このフィールドは PRimary_key と一意のパラメータをサポートしていません。そうでない場合は TypeError がスローされます 異常な。
必須パラメータが 1 つあります:
FileField.upload_to
ファイルの保存に使用されるローカル ファイル システム。 MEDIA_ROOT 設定に基づいてファイルの URL 属性を決定します。
パスには時刻形式の文字列 strftime() を含めることができ、ファイルをアップロードするときに現在の日付/時刻に置き換えることができます (これにより、ファイルのアップロード時にディレクトリがいっぱいになることがなくなります)。
このパラメータは、関数などの呼び出し可能な項目にすることもできます。関数を呼び出して、ファイル名を含むアップロード パスを取得することもできます。この呼び出し可能関数は 2 つの引数
を受け入れ、ファイルを保存するための Unix スタイルのパス (/ スラッシュを含む) を返す必要があります。 2 つのパラメーターは次のとおりです:
インスタンス: 現在の FileField のモデル インスタンスを定義します。より正確には、そのファイルが添付されたモデル インスタンスです。
ほとんどの場合、このファイルを保存するときに、モデル インスタンス オブジェクトは、デフォルトの AutoField を使用している可能性が高く、データベースから主キー値をまだ取得していないため、まだデータベースに保存されていません。
ファイル名: アップロードされたファイルの元の名前。最終パスを生成するときに使用できます。
オプションのパラメータもあります:
FileField.storage
ファイルの保存と取得を担当するオブジェクト。
デフォルトのフォームウィジェットはFileInputです。
注: モデルで FileField または ImageField を使用するには、次の手順に従います:
1. プロジェクト設定ファイルで MEDIA_ROOT を定義し、その値をアップロードされたファイルの保存に使用されるディレクトリのフル パスに設定する必要があります。 (パフォーマンスを考慮して、Django はデータベースにファイルを保存しません。)
次に、MEDIA_URL を定義し、その値をディレクトリを表す URL に設定します。
Web サーバーが使用するアカウントにディレクトリへの書き込み権限があることを確認してください。
2. モデルに FileField または ImageField を追加し、Django が使用できるように Upload_to 項目が定義されていることを確認します。 ファイルの保存に
MEDIA_ROOT のどのサブディレクトリを使用するかを確認してください。
3. データベースに保存されるのはファイルのパスのみです (MEDIA_ROOT からの相対パスです)。
Django が提供する便利な url 属性を活用することを考えたことがあるかもしれません。たとえば、ImageField 名が mug_shot の場合、テンプレート
で
{{ object.mug_shot.url }}
を使用して、画像の完全な URL を取得できます。
たとえば、MEDIA_ROOT が「/home/media」に設定され、upload_to が に設定されていると仮定します。 '写真/%Y/%m/%d'。 Upload_to の '%Y/%m/%d' は strftime()、'%Y' は 4 桁の年、'%m' は 2 桁の月、'%d' は 2 桁の日です。 2007 年 1 月 15 日にファイルをアップロード
した場合、そのファイルは /home/media/photos/2007/01/15 ディレクトリに保存されます。
アップロードされたファイルのローカルファイル名、ファイルURL、またはファイルサイズを取得したい場合は、name、url、size属性を使用できます。
注: ファイルをアップロードするときは、セキュリティ上の脆弱性を避けるため、保存するファイルの場所と種類に注意してください。アップロードしたすべての
ファイルを検証して、アップロードしたファイルが必要なものであることを確認します。たとえば、アップロードされたファイルを
検証せずに他の人にファイルをアップロードさせた場合、ファイルが保存されているディレクトリが Web サーバーのルート ディレクトリにある場合、誰かが CGI または php
スクリプトをアップロードした場合、スクリプトのURLにアクセスしてスクリプトをアップロードするのは危険です。こんなことは起こらないでください!
デフォルトでは、データベース内の FileField インスタンスの対応する列は varchar(100) です。他のフィールドと同様に、max_length を使用できます。 パラメータはフィールドの最大長を変更します。
FileField および FieldFile
クラス FieldFile
モデルの FileField
フィールドにアクセスすると、基礎となるファイルにアクセスするためのプロキシとして FieldFile のインスタンスを取得します。インスタンスには、ファイル データと対話するために使用できるいくつかのプロパティとメソッドがあります。
FieldFile.url
基になるストレージ クラスの url() メソッドを読み取り専用で呼び出して、ファイルの相対 URL にアクセスします。
FieldFile.open(mode='rb')
Pythonのopen()メソッドに似ています。
FieldFile.close()
Pythonのclose()メソッドに似ています。
FieldFile.save(name,content,save=True)
このメソッドは、ファイル名とファイルのコンテンツをフィールドに渡し、それをモデルに保存します。このメソッドには、name、ファイル名、content、という 2 つの必須パラメータが必要です。 ファイルの内容を含むオブジェクト。 save パラメータはオプションであり、主にファイルの変更後にインスタンスを保存するかどうかを制御します。デフォルトは True です。 content パラメータは django.core.files.File であることに注意してください。 のインスタンス。Python の組み込み File オブジェクトではありません。次のように、
を使用して既存の Python ファイル オブジェクトからファイルを構築できます:
from django.core.files import File
# Python の組み込み open() を使用して既存のファイルを開きますf = open('/tmp /hello.world')
myfile = File(f)
または文字列から構築します:
from django.core.files.base import ContentFile
FieldFile.delete( save=True)
このインスタンスに関連するファイルを削除し、フィールドのすべての属性をクリアします。
注: delete() が呼び出されたときにファイルが開いている場合、このメソッドはファイルを閉じます。
save パラメータはオプションで、ファイルの削除後にインスタンスを保存するかどうかを制御します。デフォルトは True です。
モデルを削除しても、関連ファイルは削除されないことに注意してください。これらの孤立したファイルを削除したい場合は、自分で処理する必要があります (たとえば、クリーンアップ コマンドを手動で実行することも、cron を通じて定期的にクリーンアップ コマンドを実行することもできます)
FilePathField
class FilePathField(path=None[ 、一致 = なし、再帰 = False、 max_length=100, **options])
これは CharField であり、ファイル システム内のディレクトリ内の特定のファイルを選択するために使用されます。 3 つの独自パラメータがありますが、最初のパラメータ
のみが必須です:
FilePathField.path
このパラメータは必須です。これは、FilePathField がファイルを選択するために使用するディレクトリへの絶対パスです。例: "/home/images".
FilePathField.match
オプションのパラメータ。これは、FilePathField がファイル名をフィルターするために使用する正規表現文字列で、条件を満たすファイルのみが
ファイル選択リストに表示されます。正規表現はファイル パスではなくファイル名のみに一致することに注意してください。たとえば、「foo.*.txt$」は
foo23.txt という名前のファイルのみに一致しますが、bar.txt および foo23.gif には一致しません。
FilePathField.recursive
オプションのパラメータ。その値は True または False です。デフォルト値は False です。パスの下にサブディレクトリを含めるかどうかを指定します。
FilePathField.allow_files
この項目は、Django 1.5 に新しく追加されたものです。値が True または False のオプションのパラメーター。デフォルト値は次のとおりです 真実。指定された場所にファイルを含めるかどうかを指定します。この項目とallow_foldersのいずれか1つがTrueである必要があります。
FilePathField.allow_folders
Django 1.5 の新機能。オプションのパラメータ。その値は True または False です。デフォルトは False です。指定した場所にディレクトリを含めるかどうかを指定します。この項目とallow_filesのいずれか1つが必要です 真実。
前述したように、match はファイル パスではなくファイル名のみを照合します。したがって、次の例:
FilePathField(path="/home/images", match="foo.*", recursive=True)
は、/home/images/ ではなく、/home/images/foo.gif に一致します。 foo/bar.gif。これは、match がファイル名のみに一致するためです。
(foo.gif および bar.gif).
デフォルトでは、データベース内の FilePathField インスタンスの対応する列は varchar(100) です。他のフィールドと同様に、max_length を使用できます。 パラメータはフィールドの最大長を変更します。
FloatField
class FloatField([**options])
このフィールドは、Python の float インスタンスを使用して浮動小数点数を表します。
デフォルトのフォームウィジェットはTextInputです。
FloatField と DecimalField の違いに注意してください。
ImageField
class ImageField(upload_to=None[, height_field=None, width_field=None, max_length=100,**options])
アップロードされたオブジェクトが合法的な画像ファイルであるかどうかを検証することを除いて、FileField と同じです。
FileField で有効なパラメータに加えて、ImageField は 2 つのプロパティ File.height と File.width も使用できます。 。
これには 2 つのオプションのパラメータがあります:
ImageField.height_field
画像の高さを保存するフィールドの名前。オブジェクトを保存するとき、画像ファイルはこのフィールドに設定された高さに基づいて拡大縮小され、変換されます。
ImageField.width_field
画像の幅を保存するフィールドの名前。オブジェクトを保存するとき、画像ファイルはこのフィールドで設定された幅に従って拡大縮小され、変換されます。
デフォルトでは、ImageField インスタンスはデータベース内の varchar(100) に対応します リスト。他のフィールドと同様に、max_length パラメーターを使用してフィールドの最大長を変更できます。
IntegerField
クラス IntegerField([**options])
整数フィールド。デフォルトのフォーム ウィジェットは TextInput です。
IPAddressField
class IPAddressField([**options])
IP アドレス フィールドを文字列形式で表します (「192.0.2.30」など)。デフォルトのフォーム ウィジェットは TextInput です。
GenericIPAddressField
class GenericIPAddressField([**options])
Django1.4 の新機能。
IP4 または IP6 アドレス フィールドを文字列形式で表します (「192.0.2.30」や「2a02:42fe::4」など)。デフォルトのフォーム ウィジェットは TextInput です。
IPv6 アドレス形式は RFC 4291 セクションに準拠します 2.2.たとえば、このアドレスが実際には IPv4 アドレスである場合、最後の 32 ビットは「::ffff:192.0.2.0」のように 10 進数で表すことができます。
2001:0::0:01 は 2001::1 と書くことができ、::ffff:0a0a:0a0a は::ffff:10.10.10.10 と書くことができます。文字はすべて小文字です。
GenericIPAddressField.protocol
入力プロトコルの有効性を確認します。デフォルト値は「両方」、つまり IPv4 または IPv6 です。このエントリでは大文字と小文字が区別されません。
GenericIPAddressField.unpack_ipv4
::ffff:192.0.2.1 のような、IPv4 マップされたアドレスについて説明します。このオプションが有効な場合、アドレスは 192.0.2.1 として解釈されます。デフォルトでは無効になっています。場合のみ プロトコルが「両方」に設定されている場合にのみ有効にできます。
NullBooleanField
class NullBooleanField([**options])
BooleanField に似ていますが、NULL オプションが追加されています。 null=True オプションを指定した BooleanField の代わりに、このフィールドを使用することをお勧めします。
デフォルトのフォームウィジェットはNullBooleanSelectです。
PositiveIntegerField
class PositiveIntegerField([**options])
IntegerField に似ていますが、フィールド値は負でない数値でなければなりません。
PositiveSmallIntegerField
クラス PositiveSmallIntegerField([**options])
は PositiveIntegerField に似ていますが、値の範囲はより小さく、データベース設定によって制限されます。
SlugField
class SlugField([max_length=50, **options])
Slug は、イベントの短いラベルを指すニュース用語です。文字、数字、アンダースコア、またはハイフンのみで構成できます。通常、URL の一部として使用されます。
CharField と同様に、max_length を指定できます (データベースの互換性とこのセクションで説明されている max_length に注意してください)。指定されていない場合 max_length の場合、Django はフィールドの長さをデフォルトで 50 に設定します。
このフィールドは自動的に Field.db_index を True に設定します。
他のフィールドの値に基づいて Slug フィールドに自動的に値を入力すると便利です。 Django の管理画面で prepopulated_fields を使用できます これをする。
SmallIntegerField
クラス SmallIntegerField([**options])
は IntegerField に似ていますが、値の範囲が狭く、データベースの制限によって制限されます。
TextField
クラス TextField([**options])
大きなテキストフィールド。デフォルトのフォーム ウィジェットは Textarea です。
TimeField
class TimeField([auto_now=False, auto_now_add=False, **オプション])
このフィールドは、時間を表すために Python の datetime.time インスタンスを使用します。 DateField と同じオートコンプリート パラメーターを受け入れます。
デフォルトのフォームウィジェットはTextInputです。 URL を保存する
URLField
class URLField([max_length=200, **options])
CharField。
すべての CharField サブクラスと同様に、URLField はオプションの max_length パラメータを受け入れます。そのデフォルト値は 200 です。
上記は Django ドキュメントの内容です - モデル フィールド タイプ (FieldTypes) 関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。