django 시리즈 3 - 데이터베이스 필드 유형

필드 유형
필드 유형은 Django ORM을 사용하여 데이터베이스를 만들 때 지원되는 데이터 필드 유형을 나타냅니다.
공통 필드
(1) AutoField
증가된 정수 필드, 필수 매개 변수 primary키=True, 데이터베이스의 키가 되며, 이 필드가 없을 때django는 자동으로 키 id 필드를 생성합니다.
(2) BigAutoField
AutoField와 매우 유사하지만 범위는 1~9223372036854775807이다.
(3) BigIntegerField
64비트 정수로 Integer Field와 매우 유사한데 다른 점은 -922372036854775808에서 9223372036854775807까지 일치할 수 있다는 것이다.이 필드의 기본 폼 위젯은 TextInput입니다.
(4) BinaryField
원시 2진 데이터를 저장하는 필드입니다.bytes,bytearray,memoryview를 분배할 수 있습니다.기본적으로 BinaryField는 editable을False로 설정합니다. 이 경우 ModelForm에 포함할 수 없습니다.django2.1에서 수정됨: 이전 버전에서는 편집 테이블을 True로 설정할 수 없습니다.추가 옵션 매개 변수가 있습니다: maxlength, 필드의 최대 길이입니다. 문자 단위입니다.최대 길이는django의 검증에서 강제 실행MaxLengthValidator를 사용합니다.
(5) BooleanField
기본 양식 컨트롤은 Checkbox Input 또는 Null Boolean Select입니다.default 값이 로 설정되지 않은 경우 BooleanField 값은 None 입니다.
(6) IntegerField
정수 유형 필드(2147483648~2147483647.
(7) CharField
문자 유형, max 필요length 매개 변수.문자의 최대 길이를 나타냅니다.
(8) DateField
날짜 형식, 날짜 형식은 YYYY-MM-DD로python의datetime에 해당합니다.date 실례.
매개변수:
auto_now: 매번 수정 사항을 현재 날짜 시간으로 저장하여 "마지막 수정"시간 스탬프에 유용합니다.Model을 사용합니다.save()는 저장할 때 유효하며 QuerySet을 사용합니다.업데이트 () 시 자동으로 업데이트되지 않습니다.
auto_now_dd: 대상을 새로 만들 때 현재 날짜와 시간을 자동으로 추가합니다. '창설 시간' 에 사용합니다.
auto_now 및 autonow_add와default 매개 변수는 서로 밀어붙여서 동시에 설정할 수 없습니다.
(9) DatetimeField
날짜 시간 필드, 형식은 YYYY-MM-DD HH:MM[:ss[.uuuuuuuu]][TZ]이며 Python의datetime에 해당합니다.datetime의 실례.
(10) DecimalField
python에서 Decimal 인스턴스로 표시되는 고정밀 십진수필요한 매개변수는 두 개입니다:maxdigits 숫자가 허용하는 최대 비트입니다.decimal 보다 크거나 같아야 합니다.places.decimal_places는 숫자와 함께 저장된 소수 자릿수를 나타낸다.예를 들어 최대 999, 소수점 두 자리의 숫자를 저장하려면 다음과 같이 하십시오.
models.DecimalField(max_digits=5, decimal_places=2)
(11) DurationField
시간을 저장하는 필드 - 파이톤으로 파이톤에서 timedelta를 모델링합니다.PostgreSQL에서 사용할 때 사용하는 데이터 형식은 interval이고 Oracle에서는 를 사용합니다.그렇지 않으면 마이크로초가 사용됩니다.INTERVAL DAY(9) TO SECOND(6)bigint
(12) EmailField
EmailValidator를 사용하여 필드가 올바른 이메일 주소인지 확인합니다.
(13) FileField
파일 업로드 필드, primary 지원되지 않음키 매개 변수, 이 매개 변수를 사용하면 오류가 발생합니다.
다음과 같은 두 가지 옵션 매개변수가 있습니다.
upload_to: 디렉터리와 파일 이름을 업로드하는 방법을 설정하고 두 가지 방법으로 설정할 수 있습니다.MEDIA 에 매개변수 첨부로컬 파일 시스템에서 업로드된 파일이 저장되는 ROOT 경로입니다.
storage: 파일의 저장과 검색을 처리하는 데 사용되는 저장 대상입니다.
**참고: **모델에서 FileField 또는 ImageField를 사용하는 경우 다음 단계를 수행합니다.
l 은 settings에 있다.py에서 MEDIA 정의ROOT는django를 위해 업로드된 파일을 저장하는 디렉터리의 전체 경로를 설정합니다. (이 파일들은 데이터베이스에 직접 저장되지 않고 데이터베이스에 저장된 경로만 있습니다.)MEDIA 정의URL은 이 디렉터리의 기본 공공 URL입니다. 이 디렉터리가 웹 서버의 사용자 계정으로 쓸 수 있는지 확인하십시오.
l FileField 또는 ImageField 필드를 모델에 추가할 때 upload 정의to 지정 MEDIAROOT의 경로는 파일을 업로드하는 디렉토리에 사용됩니다.
l 데이터베이스에 저장된 모든 파일은 MEDIA ROOT에 대한 경로입니다.ImageField가 호출되면 mugshot에서는 대시보드에서 이미지의 절대 경로를 가져올 수 있습니다.{{ object.mug_shot.url }}
MEDIAROOT의 설정은'/home/media'이고 uploadto를'포토s/%Y/%m/%d'로 설정합니다.서술한 **'%Y/%m/%d'**의 부분 uploadto가strftime()에 포맷됨;'%Y'는 네 자리 수의 연도이고,'%m'은 두 자리 수의 달이며,'%d'는 두 자리 수의 날짜이다.2007년 1월 15일에 파일을 업로드하면, 이 파일은 디렉터리/홈/미디어/포토s/2007/01/15에 저장됩니다.
l FieldFile.name: 상대 경로를 포함하는 파일 이름입니다.
l FieldFile.url: 읽기 전용 속성으로 파일에 접근하는 상대적인 URL입니다.
(14) FloatField
python에서float 실례로 표시된 부동점수를 나타냅니다.
(15) ImageField
FileField의 모든 방법을 상속하지만 업로드된 객체가 유효한 이미지인지 확인합니다.특수 속성 FileField 외에도 ImageField 하나에 height 및 width 속성이 있습니다.ImageField는 이러한 속성을 쉽게 조회할 수 있도록 두 개의 추가 옵션 매개변수를 제공합니다.데이터베이스에 생성된 varchar 열의 기본 최대 길이는 100자입니다.
ImageField.height_field: 모델 실례를 저장할 때마다 모델 필드의 이름이 자동으로 그림의 높이를 채웁니다.
ImageField.width_field: 모델 실례를 저장할 때마다 모델 필드의 이름이 자동으로 그림의 폭을 채웁니다.
(16) IntegerField
하나의 정수.-2147483648부터 2147483647까지.
(17) GenericIPAdressField
문자열 형식의 IPv4 및 IPv6 주소(예: 192.0.2.30 또는 2a02:42fe::4).기본 양식 형식은 TextInput입니다.
(18) TextField
텍스트 필드.기본 폼 위젯은 Textarea입니다. max 를 지정하면length 속성, Textarea가 자동으로 생성한 폼 필드에 반영됩니다.
(19) TimeField
시간, 파이톤에서 날짜 타임.time 인스턴스 표현.와 동일한 자동 채우기 옵션인 DateField를 적용합니다.
(20) URLField
URLValidator를 확인하는 CharField URL
이 필드의 기본 폼 위젯은 TextInput입니다.
모든 CharField 하위 클래스와 마찬가지로 URLField는 옵션maxlength 매개 변수.max 가 지정되지 않은 경우length는 기본값 200을 사용합니다.
(21) UUIDField
일반 고유 식별자를 저장하는 필드입니다.Python의 UUID 클래스를 사용합니다.PostgreSQL에서 사용할 때 uid 데이터 형식에 저장되며, 그렇지 않으면 에서char(32)에 저장됩니다.
통용되는 유일한 표식부호로 가지고 있는 primary 를 대체할 수 있습니다키의 AutoField 필드입니다.데이터베이스는 UUID를 생성하지 않으므로 default를 사용하는 것이 좋습니다.
import uuidfrom django.db import models

class MyUUIDModel(models.Model):

 	id=models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False)

(22) ForeignKey
다대일 관계, 모델과 관련된 클래스와 on 두 개의 위치 매개 변수가 필요합니다.delete 옵션, 캐비닛 관계 (자신과 다대일 관계를 가진 대상) 를 만들면 모델을 사용합니다.ForeignKey(‘self’,on_delete=models.CASCADE).정의되지 않은 모델에 관계식을 생성해야 하는 경우 모델 객체 자체가 아닌 모델 이름을 사용할 수 있습니다.예:
from django.db import models

class Car(models.Model):
   manufacturer = models.ForeignKey('Manufacturer',on_delete=models.CASCADE, )

class Manufacturer(models.Model):
  	pass

매개변수:
ForeignKey.on_delete: 모든 가능한 매개 변수는django에 있습니다.db.models에서a에서 참조하는 객체를 삭제하면 Django가 on 을 시뮬레이션합니다.delete 매개 변수에 지정된 SQL 구속조건의 동작입니다.예를 들어, 빈 필드가 있고 참조된 객체를 삭제할 때 빈 필드로 설정된 경우
user = models.ForeignKey(

​    User,

​    models.SET_NULL,

​    blank=**True**,

​    null=**True**,)

**CASCADE:**캐스케이드 삭제.Django는 DELETE CASCADE에서 SQL 구속조건의 동작을 시뮬레이션하고 ForeignKey가 포함된 객체를 삭제합니다.
**DO_NOTHING:** 조치를 취하지 않습니다.
**PROTECT:**ProtectedError의 하위 클래스를 유발하여 참조 삭제를 방지하는 개체는django입니다.db.IntegrityError의 하위 클래스입니다.
SET_NULL: 삭제할 때 키를 null로 설정하고, null=True일 때만 사용할 수 있습니다.
SET_DEFAULT: 키를 기본값으로 설정하고 기본값을 설정해야 사용할 수 있습니다.
(23) ManyToManyField
다중 쌍 다중 관계식은 모델과 관련된 클래스가 필요합니다. 작업 원리는 ForeignKey와 똑같습니다. 귀속과 타성 관계를 포함합니다.Django는 중간 링크 테이블을 자동으로 작성하여 여러 쌍의 관계를 나타냅니다.
(24) OneToOneField
일대일 관계의 관계는 개념적으로 unique=True가 있는ForeignKey와 비슷하지만 관계의 반대편(주표 데이터)에서 단일 대상을 직접 되돌려준다.

좋은 웹페이지 즐겨찾기