Django
모델 필드 참조
수색…
매개 변수
매개 변수 | 세부 |
---|---|
없는 | true의 경우, 하늘의 값이 데이타베이스에 null 로서 포함됩니다. |
공백 | true 인 경우 필드는 양식에 필요하지 않습니다. 필드를 비워두면 Django는 기본 필드 값을 사용합니다. |
선택 | 이 필드의 선택 사항으로 사용되는 2 요소 iterables의 반복 가능 설정하면 필드가 관리자의 드롭 다운으로 렌더링됩니다. [('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 . 추가 오류 메시지는 사용자 정의 필드에 의해 정의 될 수 있습니다. |
help_text | 사용자를 돕기 위해 필드와 함께 표시 할 텍스트입니다. HTML이 허용됩니다. |
on_delete | ForeignKey가 참조하는 객체가 삭제되면 Django는 on_delete 인수에 지정된 SQL 제약 조건의 동작을 에뮬레이션합니다. 이것은 ForeignKey 및 OneToOneField 필드에 대한 두 번째 위치 인수입니다. 다른 필드에는이 인수가 없습니다. |
primary_key | True 이면이 필드가 기본 키가됩니다. Django는 기본 키를 자동으로 추가합니다. 따라서 사용자 정의 기본 키를 작성하려는 경우에만 필요합니다. 모델 당 하나의 기본 키만 가질 수 있습니다. |
독특한 | True 이면이 필드에 중복 값을 입력하면 오류가 발생합니다. 이는 사용자 인터페이스 블록이 아닌 데이터베이스 수준의 제한 사항입니다. |
unique_for_date | 값을 DateField 또는 DateTimeField 로 설정하면 같은 날짜 또는 날짜 시간에 값이 중복되면 오류가 발생합니다. |
unique_for_month | unique_for_date 와 비슷 unique_for_date , 해당 달에 대한 점검은 제한됩니다. |
unique_for_year | unique_for_date 와 유사하지만 수표는 연도로 제한됩니다. |
verbose_name | django가 여러 장소에서 사용하는 필드의 친숙한 이름 (예 : 관리자 및 모델 양식의 레이블 만들기). |
검사기 | 이 필드의 validator의리 스트. |
비고
- 필요한 경우 자신의 필드를 작성할 수 있습니다.
- 기본 모델 클래스의 함수, 가장 일반적으로
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
고정 소수점 이하의 십진수로 파이썬에서 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
이것은 바이너리 데이터를 저장하는 데 사용되는 특수 필드입니다. 바이트 만 허용 합니다 . 데이터는 저장시 serialize됩니다.
바이너리 데이터를 저장하므로이 필드는 필터에서 사용할 수 없습니다.
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
에는 두 개의 선택적 매개 변수가 있습니다.
auto_now_add
는 객체가 생성 될 때 필드의 값을 현재 datetime으로 설정합니다.auto_now
는 필드가 저장 될 때마다 필드의 값을 현재 날짜 시간으로 설정합니다.
이 옵션과 default
매개 변수는 함께 사용할 수 없습니다.
외래 키
ForeignKey 필드는 모델간에 다 many-to-one
관계를 만드는 데 사용됩니다. 다른 분야의 대부분은 위치 인수가 필요하지 않습니다. 다음 예제에서는 자동차와 소유자 관계를 보여줍니다.
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)
필드의 첫 번째 인수는 모델이 관련된 클래스입니다. 두 번째 위치 인수는 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)
...
이렇게하면 하나 이상의 Car 객체와 관련된 Person 객체가 삭제되지 않습니다. Person 객체를 참조하는 Car 객체는 모두 먼저 삭제해야합니다. 그런 다음 Person 객체를 삭제할 수 있습니다.