Django
モデルフィールドリファレンス
サーチ…
パラメーター
パラメータ | 詳細 |
---|---|
ヌル | 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 | このフィールドに表示されるデフォルトのエラーメッセージをカスタマイズするために使用します。値は辞書で、キーはエラーを表し、値はメッセージです。デフォルトのキー(エラーメッセージ用)はnull 、 blank 、 invalid 、 invalid_choice 、 unique およびunique_for_date です。追加のエラーメッセージは、カスタムフィールドによって定義されることがあります。 |
ヘルプテキスト | フィールドを表示するテキスト。ユーザーを支援します。 HTMLは許可されます。 |
on_delete | ForeignKeyで参照されるオブジェクトが削除されると、Djangoはon_delete引数で指定されたSQL制約の動作をエミュレートします。これは、 ForeignKey とOneToOneField 両方のフィールドの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
整数フィッティング番号-9223372036854775808
に9223372036854775807
( 8 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つの必須引数があります。
- DecimalField.max_digits :数値に許される最大桁数。この数値はdecimal_places以上でなければならないことに注意してください。
- DecimalField.decimal_places :数値を格納する小数点以下の桁数です。
小数点以下3桁まで99を格納する場合は、 max_digits=5
とdecimal_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オブジェクトを削除することができます。