サーチ…


パラメーター

パラメータ詳細
ヌル trueの場合、空の値はデータベースにnullとして格納されます。
ブランク trueの場合、フィールドはフォームでは必要ありません。フィールドが空白の場合、Djangoはデフォルトのフィールド値を使用します。
選択肢このフィールドの選択肢として2要素iterableを反復可能に使用できます。設定されている場合、フィールドは管理者のドロップダウンとしてレンダリングされます。 [('m', 'Male'),('f','Female'),('z','Prefer Not to Disclose')]オプションをグループ化するには、 [('Video Source',((1,'YouTube'),(2,'Facebook')),('Audio Source',((3, 'Soundcloud'),(4, 'Spotify'))]
db_column デフォルトでは、djangoはデータベースカラムのフィールド名を使用します。これを使用してカスタム名を指定する
db_index True場合、データベースのこのフィールドにインデックスが作成されます
db_tablespace このフィールドのインデックスに使用するテーブルスペース。 このフィールドは、データベースエンジンがサポートしている場合にのみ使用され、そうでない場合は無視されます。
デフォルトこのフィールドのデフォルト値。値、または呼び出し可能なオブジェクトにすることができます。変更可能なデフォルト(リスト、セット、ディクショナリ)の場合 、呼び出し可能を使用する必要あります。移行との互換性のため、ラムダを使用することはできません。
編集可能な False場合、フィールドはモデル管理者またはModelForm表示されません。デフォルトはTrueです。
error_messages このフィールドに表示されるデフォルトのエラーメッセージをカスタマイズするために使用します。値は辞書で、キーはエラーを表し、値はメッセージです。デフォルトのキー(エラーメッセージ用)はnullblankinvalidinvalid_choiceuniqueおよびunique_for_dateです。追加のエラーメッセージは、カスタムフィールドによって定義されることがあります。
ヘルプテキストフィールドを表示するテキスト。ユーザーを支援します。 HTMLは許可されます。
on_delete ForeignKeyで参照されるオブジェクトが削除されると、Djangoはon_delete引数で指定されたSQL制約の動作をエミュレートします。これは、 ForeignKeyOneToOneField両方のフィールドの2番目の位置引数です。他のフィールドにはこの引数はありません。
primary_key True場合、このフィールドは主キーになります。 Djangoは主キーを自動的に追加します。カスタムプライマリキーを作成する場合にのみ必要です。モデルごとに1つのプライマリキーしか持てません。
ユニークな True場合、このフィールドに重複した値を入力するとエラーが発生します。これはデータベースレベルの制限であり、単なるユーザーインターフェイスブロックではありません。
unique_for_date 値をDateFieldまたはDateTimeFieldに設定すると、同じ日付または日付の時刻に重複する値があるとエラーが発生します。
unique_for_month unique_for_dateに似ていますが、チェックはその月に制限されています。
unique_for_year unique_for_dateと同様、検査は年に限定されます。
verbose_name さまざまな場所でdjangoが使用する、フィールドのフレンドリ名(管理者やモデルのフォームにラベルを作成するなど)。
バリデーターこのフィールドのバリデータのリスト。

備考

  • あなたが必要と感じたらあなた自身のフィールドを書くことができます
  • 基本モデルクラスの関数をオーバーライドできます。最も一般的なのはsave()関数です

番号フィールド

数値フィールドの例を以下に示します。

自動フィールド

主に主キーに使用される自動インクリメント整数。

from django.db import models

class MyModel(models.Model):
    pk = models.AutoField()

各モデルは、デフォルトでプライマリキーフィールド( idと呼ばれます)を取得します。したがって、プライマリキーの目的でモデル内にidフィールドを複製する必要はありません。


BigIntegerField

整数フィッティング番号-922337203685477580892233720368547758078 Bytes )。

from django.db import models

class MyModel(models.Model):
    number_of_seconds = models.BigIntegerField()

IntegerField

IntegerFieldは、-2147483648から2147483647( 4 Bytes )までの整数値を格納するために使用されます。

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.IntegerField(default=0)

defaultパラメータは必須ではありません。しかし、デフォルト値を設定すると便利です。


PositiveIntegerField

IntegerFieldと似ていますが、正またはゼロ(0)である必要があります。 PositiveIntegerFieldは、0〜2147483647( 4 Bytes )の整数値を格納するために使用されます。これは、意味的に陽性でなければならない分野で有用となり得る。例えば、カロリーで食べ物を記録している場合、それは否定的であってはなりません。このフィールドは、検証によって負の値を防止します。

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.PositiveIntegerField(default=0)

defaultパラメータは必須ではありません。しかし、デフォルト値を設定すると便利です。


SmallIntegerField

SmallIntegerFieldは、-32768〜32767( 2 Bytes )の整数値を格納するために使用されます。このフィールドは、極端ではない値に役立ちます。

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=255)
    temperature = models.SmallIntegerField(null=True)

PositiveSmallIntegerField

SmallIntegerFieldは、0〜32767( 2 Bytes )の整数値を格納するために使用されます。 SmallIntegerFieldと同じように、このフィールドは値が高くなく、意味的に正の値にするのに便利です。例えば、それは否定できない年齢を格納することができます。

from django.db import models

class Staff(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    age = models.PositiveSmallIntegerField(null=True)

PositiveSmallIntegerFieldは選択肢として便利ですが、これはEnumを実装するジャンゴ型の方法です。

from django.db import models
from django.utils.translation import gettext as _

APPLICATION_NEW = 1
APPLICATION_RECEIVED = 2
APPLICATION_APPROVED = 3
APPLICATION_REJECTED = 4

APLICATION_CHOICES = (
    (APPLICATION_NEW, _('New')),
    (APPLICATION_RECEIVED, _('Received')),
    (APPLICATION_APPROVED, _('Approved')),
    (APPLICATION_REJECTED, _('Rejected')),
)

class JobApplication(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    status = models.PositiveSmallIntegerField(
        choices=APLICATION_CHOICES, 
        default=APPLICATION_NEW
    )
    ...

状況に応じてクラス変数またはモジュール変数として選択肢を定義することは、それらを使用する良い方法です。選択肢がフレンドリーな名前なしでフィールドに渡されると、混乱が生まれます。


DecimalField

固定精度の10進数。PythonでDecimalインスタンスで表されます。 IntegerFieldとその派生物とは異なり、このフィールドには2つの必須引数があります。

  1. DecimalField.max_digits :数値に許される最大桁数。この数値はdecimal_places以上でなければならないことに注意してください。
  2. DecimalField.decimal_places :数値を格納する小数点以下の桁数です。

小数点以下3桁まで99を格納する場合は、 max_digits=5decimal_places=3使用する必要があります。

class Place(models.Model):
    name = models.CharField(max_length=255)
    atmospheric_pressure = models.DecimalField(max_digits=5, decimal_places=3)

BinaryField

これはバイナリデータの格納に使用される特殊なフィールドです。 バイトのみを受け付けます 。データは格納時にbase64シリアル化されます。

バイナリデータを格納するので、このフィールドはフィルタで使用できません。

from django.db import models

class MyModel(models.Model):
    my_binary_data = models.BinaryField()

CharField

CharFieldは、定義された長さのテキストを格納するために使用されます。以下の例では、最大128文字のテキストをフィールドに格納することができます。これよりも長い文字列を入力すると、検証エラーが発生します。

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=128, blank=True)

DateTimeField

DateTimeFieldは、日付の時刻値を格納するために使用されます。

class MyModel(models.Model):
    start_time = models.DateFimeField(null=True, blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

DateTimeFieldは、2つのオプションのパラメータがあります。

  • auto_now_addは、オブジェクトの作成時にフィールドの値を現在のdatetimeに設定します。

  • auto_nowは、フィールドが保存されるたびにフィールドの値を現在のdatetimeに設定します。

これらのオプションとdefaultパラメータは相互に排他的です。

外部キー

ForeignKeyフィールドは、モデル間のmany-to-one関係を作成するために使用されます。ほとんどの他のフィールドと同じように、位置的な引数が必要です。次の例は、carとownerの関係を示しています。

from django.db import models

class Person(models.Model):
    GENDER_FEMALE = 'F'
    GENDER_MALE = 'M'

    GENDER_CHOICES = (
        (GENDER_FEMALE, 'Female'),
        (GENDER_MALE, 'Male'),
    )

    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    age = models.SmallIntegerField()


class Car(model.Model)
    owner = models.ForeignKey('Person')
    plate = models.CharField(max_length=15)
    brand = models.CharField(max_length=50)
    model = models.CharField(max_length=50)
    color = models.CharField(max_length=50)

フィールドの最初の引数は、モデルが関連するクラスです。 2番目の位置引数はon_delete引数です。現在のバージョンでは、この引数は必須ではありませんが、Django 2.0では必須です。引数のデフォルト機能は、次のように表示されます。

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.CASCADE)
    ...

これにより、オーナーがPersonモデルから削除されたときに、モデルからCarオブジェクトが削除されます。これがデフォルトの機能です。

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.PROTECT)
    ...

これにより、少なくとも1つのCarオブジェクトに関連しているPersonオブジェクトが削除されなくなります。 Personオブジェクトを参照するCarオブジェクトはすべて最初に削除する必要があります。そして、Personオブジェクトを削除することができます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow