1. ホーム
  2. パイソン

Djangoのフィールドタイプ

2022-03-02 06:45:24
<パス

FieldType、共通パラメータ。
ヌル
True に設定すると、Django はデータベースのフィールドに NULL を格納します。デフォルトは False です。
空白
Trueに設定すると、このフィールドは空白にすることができ、デフォルトはFalseです。
選択肢
タプルまたは 2 タプルのリストで、 choices を実行すると、Django の管理者は標準のテキストボックスの代わりにセレクトボックスを使ってフィールドを埋めます。

GENDER_CHOICES=(
('f', 'female'),
('m', 'male'),
)

2-タプルの最初の要素は、データベースに保存されるデータで、2番目の要素は、管理者のインターフェイスに表示されるデータです。モデルインスタンスで choices パラメータを使用するフィールドは、get_field の _display メソッドを使用して、2-タプルの2番目の要素、つまり choices の表示フィールドを取得することができます。

from django.db import models
class Person(models.Model):
    GENDER_CHOICES = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
    name = models.CharField(max_length=60)
    gender = models.CharField(max_length=2, choices=GENDER_CHOICES)

>>> p = Person(name="Fred Flinstone", gender="M")
>>> p.save()
>>> p.gender
u'M'
>>> p.get_gender_display()
u'Male'


>>> p = Person(name="Fred Flinstone", gender="M")
>>> p.save()
>>> p.gender
u'M'
>>> p.get_gender_display()
u'Male'

デフォルト
フィールドのデフォルト値には、"callable object" を使って、このモデルの新しいオブジェクトが作られるたびに、"callable object" が呼び出されるようにすることができます。
ヘルプ_テキスト
help_textの値は、adminフォームで表示することができますが、adminを使用しない場合でも、説明文書として使用することができます。
プライマリーキー
True の場合、このフィールドはこのモデルの主キーとなります。
一意
True の場合、このフィールドはこのテーブルで一意でなければなりません。

一般的なフィールドの種類
1. AutoField 自己インクリメントのフィールドで、ID に基づいて自己増殖する IntegerField フィールドです。通常は自分で設定する必要はなく、主キーを設定しなければ、 django が自動的に主キーフィールドとして追加します。

2. CharField(max_length=none[, **options]) 最大長のパラメータを持つ必要がある文字列フィールドで、データベースレベル と django データ検証レベルの両方で動作します。django の admin バックエンドはこれを一行の入力ボックスで表現します。

  1. CommaSeparatedIntegerField (max_length=none[, **options]) カンマで区切られた整数の列を保持するために使われ、max_length属性はデータベースの移植性を考えると必須であるべきです。

4. DateField([auto_now=False, auto_now_add=False, **options]) このフィールドは python の datetime.date インスタンスを使用して日付を表します。オブジェクトが最初に保存されるとき、現在時刻を自動的に保存する auto_now パラメータがあり、一般に最終修正時刻を表すのに使用され、 auto_now_add はオブジェクトが最初に作成されるときにフィールド値を現在時刻に自動的にセットし、オブジェクトが作られた時間を表すのに使用さ れます。django admin バックエンドは、このフィールドを表現するために、現在の日付へのショートカットを持つ javascript カレンダーを使っています。

5. DateTimeField([auto_now=False, auto_now_add=False, **options]) このフィールドは datetime.datetime インスタンスを使用して、 DateField と同様に別のテーブルで時刻と日付を表します。 django admin バックエンドでは 2を使って、同じく javascript ショートカットオプションで日付と時刻を表します。

6. 6. DecimalField (max_digits=None, decimal_places=None[, **options]) 固定精度の小数点以下の数値を表すフィールドで、2つの必須引数、 max_digits は数値に許される最大桁数、 decimal_places は小数点以下の数値の最大桁数を持っています。django バックエンドはこのフィールドを使って、小数点以下の桁数の最大値を表し、通常、金額を表すのに使われます

7.EmailField([maxlength=75, **options]) 電子メールの正当性を検出するCharField

8.FileField(upload_to=None[, max_length=100, **options]) primary_key と unique パラメータをサポートしないファイルアップロードフィールドで、それ以外は間違った型になります。ファイルが保存されるローカルファイルシステムのための1つの必須パラメータ、upload_toがあります。

9. FilePathField(path=None[, match=None, recursive=False, max_length=100, **options]) は、ファイルシステム上のディレクトリ内の特定のファイルを選択するための CharField です。path はディレクトリへの絶対パス、 match はファイル名をフィルターするための正規表現文字列、 recursive は bool で path 以下のサブディレクトリを含めるかどうか指定するものであり、 ファイルを選択するために使用できます。

  1. BigIntegerField
    64ビット整数値(-2^63)-(2^63-1)

  2. バイナリフィールド
    生のバイナリデータを格納し、限られた機能、バイト割り当てのみをサポートします。

  3. BolleanField
    BooleanとNullBooleanFieldの違いは、true/false、nullはこのタイプでは許可されません。

13. FloatField
python の float インスタンスと同じで、django はそれを表現するのに使っています。FloatField と DecimalField はどちらも実数を表しますが、異なる表現で、 FloatField は python の float 型を使いますが、 DecimalField は Decimal 型を使います。そのため

14.ImageField([upload_to=None、height_field=None、width_field=None、max_length=100、 **options])
FileField のすべてのプロパティとメソッドを継承しています。パラメータは、upload_to の他に height_field, width_field, その他の属性があります。

15.IntegerField(整数フィールド
2147483648,2147483647 ] の値の範囲は、Django がサポートするすべてのデータベースで安全です。

16.IPAddressField(アドレスフィールド
ドット付き10進数表記によるIPアドレス(例:10.0.0.1

17.一般的なIPアドレスのフィールド
ip v4 と ip v6 のアドレスは、ipv6 が RFC4291 の 2.2 項に準拠していることを表しています。

18.NullBooleanField(ヌルブールフィールド
null 値を含むことができる Boolean 型で、null=True を設定した BooleanField に相当する。

19. 19. PositiveIntegerField
正の整数または 0 型で、値が [0 ,2147483647] の範囲にあるもの。

20.PositiveSmallIntegerField(ポジティブスモールインテガーフィールド
PositiveIntegerField に似た、正の短整数または 0 型で、範囲はデータベースの特性 に依存します; [0 ,32767] の範囲は Django がサポートする全ての データベースで安全です。

21. スラッグフィールド
文字、数字、アンダースコア、ハイフンのみを含むことができる文字列で、通常URLの表現に使用されます。オプションのパラメータ max_length=50, prepopulate_from は、管理者用フォームでオプションの値を示すために使用されます。

22. SmallIntegerField(スモールインテージャーフィールド
小整数フィールドは IntegerField と同様、データベースの特性に依存した値の範囲を取ります; [-32768 ,32767] の範囲は、Django がサポートする全てのデータベースで安全です。

23.テキストフィールド
テキストタイプ

24.タイムフィールド
Pythonのdatetime.timeに相当する時間です。

25.URLField
URLを格納する文字列、デフォルトの長さは200; verify_exists(True)でURLの可用性をチェックします。