Django - Field Types, Options
本明細書では、Fieldはデータベース・テーブルのカラム(column)を表します.
制限された文字列フィールドのタイプを指定する必要があります.最大長は
大きな文字列を持つフィールドで、長さは制限されません.
整数フィールド
小数点を持つフィールド.
True、Falseフィールド、
Null値を受け入れるには、
日付と時刻のフィールド
日付フィールドのみ:
保存ごとに
URLフィールド
主に画像URLを挿入し、
Null値がNullのオプションを受け入れます.デフォルトはFalseです.
空の値を許可するオプション、デフォルト値はFalse
デフォルトのオプションの指定
ユニークな値のみを持つように設定できるオプションです.
認証を支援するオプション.
フォーマットは
ForeignKeyで見た値が削除されたときに、これらの要素をどのように処理するかを設定します.
ManyToManyFiledで使用するモデルを指定できます
BookTagモデルを使用してアクセスします.
Metaオプションは、メタデータをInnerクラスとして親に提供します.
Meta data(メタデータ):データから生成されるデータ
Field Types
CharField
制限された文字列フィールドのタイプを指定する必要があります.最大長は
max_length
です.name = models.CharField(max_length=25)
TextField
大きな文字列を持つフィールドで、長さは制限されません.
description = models.TextField()
IntegerField
整数フィールド
num = models.IntegerField() # (4bytes)범위
positive_num = models.PositiveIntegerField() # 양수
big_num = models.BigIntegerField() # (8bytes)범위
DecimalField
小数点を持つフィールド.
max_digits
は、数字の中の虚栄の最大桁数decimal_places
以上でなければならない.decimal_places
は、数字とともに格納される小数点以下の桁数であるmg = models.DecimalField(max_digits=5, decimal_places=3)
# 소숫점 이하 3자리수의 숫자까지 99개 까지 저장하기 20.142표현 가능
BooleanField
True、Falseフィールド、
Null値を受け入れるには、
NullBooleanField
を使用する必要があります.ox = models.BooleanField(default=False)
DateTimeField
日付と時刻のフィールド
日付フィールドのみ:
DateField
時間のみ:TimeField
現在の日付は、auto_now_add=True
が最初に保存されたときにのみ適用されます.保存ごとに
auto_now=True
回、現在の日付に更新created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=Ture)
date = models.DateField()
time = models.TimeField()
URLField
URLフィールド
主に画像URLを挿入し、
max_length
を設定できますimg_url = models.URLField(max_length=500)
Field Options
null
Null値がNullのオプションを受け入れます.デフォルトはFalseです.
name = models.CharField(null=True)
blank
空の値を許可するオプション、デフォルト値はFalse
name = models.CharField(blank=True)
blank=True
vs null=True
null=True
は、フィールドの値をnullとして格納することを可能にする.blank=True
では、フィールドをフォーム(入力フォーム)から空に保存できます.null=True
およびblank=True
が指定されている場合は、任意の条件で値を空白にすることができることを示します.default
デフォルトのオプションの指定
name = models.CharField(default=null)
unique
ユニークな値のみを持つように設定できるオプションです.
name = models.CharField(unique=True)
validators
認証を支援するオプション.
フォーマットは
validators=[validate_method]
def validate_phone(value):
regex = re.compile(r'(\d{3}).*(\d{4}).*(\d{4})')
if not regex.match(value):
raise ValidationError(message= 'validate_phone')
phone = models.CharField(max_length= 50, validators = [validate_phone])
on_delete
ForeignKeyで見た値が削除されたときに、これらの要素をどのように処理するかを設定します.
# CASCADE : 모델 인스턴스도 같이 삭제
child = models.ForeignKey('Parent', on_delete=models.CASCADE)
# PROTECT : 해당 요소가 같이 삭제 되지 않도록 ProtectedError발생
child = models.ForeignKey('Parent', on_delete=models.PROTECT)
# SET_NULL : ForeignKey값을 null로 바꿈, null=True일 때만 사용 가능
child = models.ForeignKey('Parent', on_delete=models.SET_NULL, null=True)
# SET_DEFAULT : ForeignKey값을 default로 바꿈, default가 있을때만 사용 가능
child = models.ForeignKey('Parent', on_delete=models.SET_DEFAULT, default=0)
through
ManyToManyFiledで使用するモデルを指定できます
class Tag(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
tags = models.ManyToManyField('Tag', through='BookTag')
class BookTag(models.Model):
book = models.ForeignKey('Book', on_delete=models.CASCADE)
tag = models.ForeignKey('Tag', on_delete=models.CASCADE)
class Meta:
db_table = '생성된 ManyToMany Table 이름'
その後、テーブルが既に存在するため、migrate --fake
が実行される.BookTagモデルを使用してアクセスします.
Metaオプション
Metaオプションは、メタデータをInnerクラスとして親に提供します.
Meta data(メタデータ):データから生成されるデータ
class Table(Models.Model):
number = IntegerField()
price = IntegerField()
class Meta:
# number 필드는 내림차순, price 필드는 오름차순으로 정렬
ordering = ['number','price']
# 이 클래스는 추상클래스의 base가 됩니다
abstarct = True
# DB테이블 이름을 지정
db_table = 'tables'
Reference
この問題について(Django - Field Types, Options), 我々は、より多くの情報をここで見つけました https://velog.io/@jinukix/Django-Field-Types-Optionsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol