Django 문서 - 모델 필드 유형(FieldTypes)

黄舟
풀어 주다: 2016-12-17 16:10:28
원래의
1149명이 탐색했습니다.

필드 유형

AutoField

ID를 기준으로 자동으로 커지는 IntegerField 필드입니다. 일반적으로 이 필드를 직접 사용할 필요는 없습니다. 다른 필드에 기본 키를 지정하지 않으면 Django 기본 키 필드가 자동으로 추가됩니다.

BigIntegerField

IntegerField와 유사하며 범위는 -9223372036854775808인 64비트 정수입니다. 9223372036854775807로. 기본 양식 위젯은 TextInput입니다.

BooleanField

부울 값(true/false) 필드입니다.

기본 양식 위젯은 CheckboxInput입니다.

빈 값으로 null을 사용하려면 NullBooleanField를 사용하면 됩니다.

CharField

class CharField(max_length=None[, **options])

작은 문자열과 큰 문자열 모두에 적합한 문자열 필드입니다.

더 큰 텍스트의 경우 TextField를 사용해야 합니다.

기본 양식 위젯은 TextInput입니다.

CharField에는 전달되어야 하는 매개변수인 max_length(필드의 최대 문자 수)가 있습니다. 이는 데이터베이스 수준과 Django의 데이터 유효성 검사 수준 모두에서 작동합니다.

CommaSeparatedInterField

class CommaSeparatedIntegerField(max_length=None[, **옵션])

쉼표로 구분된 정수 시퀀스를 저장하는 데 사용됩니다. CharField와 마찬가지로 max_length 매개변수와 함께 제공되어야 합니다. 또한 데이터베이스마다 max_length가 다릅니다. 제한.

DateField

class DateField([auto_now=False, auto_now_add=False, **옵션])

이 필드는 Python의 datetime.date 인스턴스를 사용하여 날짜를 나타냅니다. 추가 선택적 매개변수는 다음과 같습니다.

DateField.auto_now: 개체가 저장될 때마다 Django는 자동으로 이 필드의 값을 현재 시간으로 설정합니다. 일반적으로 "최종 수정"을 의미하는 데 사용됩니다. 시간. 기본값이 아닌 현재 날짜가 사용되므로

에서는 기본값을 덮어써서 저장 시간을 변경할 수 없습니다.

DateField.auto_now_add: 객체가 처음 생성될 때 Django는 이 필드의 값을 일반적으로 객체 생성 시간을 나타내는 데 사용되는 현재 시간으로 자동 설정합니다. 또한 기본값 대신 현재 날짜를 사용합니다.

기본 양식 위젯은 TextInput입니다.

참고: auto_now 또는 auto_now_add가 True로 설정된 경우 필드에는 editable=True 및 공백=True 설정이 적용됩니다.

DateTimeField

class DateTimeField([auto_now=False, auto_now_add=False, **options])

이 필드는 datetime.datetime 인스턴스를 사용하여 날짜와 시간을 나타냅니다. 이 필드는 DateField와 동일한 매개변수를 허용합니다.

기본 양식 위젯은 TextInput입니다. Django의 관리자는 날짜와 시간을 각각 표시하기 위해 javaScript 바로가기 옵션과 함께 두 개의 TextInput을 사용합니다.

DecimalField

class DecimalField(max_digits=None, 소수점_places=None[, **options])

Decimal 인스턴스를 사용하여 고정 정밀도 십진수를 나타내는 필드입니다. 여기에는 두 가지 필수 매개변수가 있습니다.

DecimalField.max_digits: 숫자에 허용되는 최대 자릿수

DecimalField.decimal_places: 소수에 대한 최대 자릿수

예를 들어, 숫자의 최대값은 999이고 소수점 이하 두 자리를 사용하려면 다음을 사용할 수 있습니다.

models.DecimalField(..., max_digits=5, 소수점_places=2)

십억 단위의 숫자를 소수점 이하 10자리까지 저장하려면 다음과 같이 작성하세요.

models.DecimalField(..., max_digits=19,decimal_places=10)

기본 양식 위젯은 TextInput입니다.

EmailField

class EmailField([max_length=75, **options])

이메일 유효성 검사 기능이 있는 CharField입니다.

참고: 최대 길이는 기본적으로 75자이며 RFC3696/5321과 호환되는 모든 이메일 주소를 저장할 수는 없습니다. 모두 저장하려면

max_length=254로 설정하세요. 75로 설정하는 것은 레거시 문제입니다.

FileField

class FileField(upload_to=None[, max_length=100, **options])

파일 업로드 필드

참고: 이 필드는 PRimary_key 및 고유 매개변수를 지원하지 않습니다. 그렇지 않으면 TypeError가 발생합니다. 이상.

필수 매개변수가 하나 있습니다:

FileField.upload_to

파일을 저장하는 데 사용되는 로컬 파일 시스템입니다. MEDIA_ROOT 설정을 기반으로 파일의 url 속성을 결정합니다.

경로에는 파일을 업로드할 때 현재 날짜/시간으로 대체할 수 있는 시간 형식 문자열 strftime()이 포함될 수 있습니다. 이렇게 하면 파일을 업로드할 때 디렉터리가 채워지지 않습니다.

이 매개변수는 함수와 같이 호출 가능한 항목일 수도 있습니다. 함수를 호출하여 파일 이름이 포함된 업로드 경로를 얻을 수 있습니다. 이 콜러블은 두 개의 인수

를 허용하고 파일을 저장하려면 Unix 스타일 경로(/슬래시 포함)를 반환해야 합니다. 두 매개변수는 다음과 같습니다.

인스턴스: 현재 FileField의 모델 인스턴스를 정의합니다. 보다 정확하게는 해당 파일이 첨부된 모델 인스턴스입니다.

대부분의 경우 파일을 저장할 때 모델은 인스턴스 개체는 기본 AutoField를 사용하고 있을 가능성이 높으며 데이터베이스에서 기본 키 값을 아직 얻지 못했기 때문에 아직 데이터베이스에 저장되지 않았습니다.

파일 이름: 업로드된 파일의 원래 이름입니다. 최종 경로를 생성할 때 사용할 수 있습니다.

선택적 매개변수도 있습니다:

FileField.storage

파일 저장 및 검색을 담당하는 개체입니다.

기본 양식 위젯은 FileInput입니다.

참고: 모델에서 FileField 또는 ImageField를 사용하려면 다음 단계를 따르세요.

1 프로젝트 설정 파일에서 MEDIA_ROOT를 정의하고 저장하는 데 사용할 값을 설정해야 합니다. uploads 파일 디렉터리의 전체 경로입니다. (Django는 성능상의 이유로 데이터베이스에 파일을 저장하지 않습니다.)

그런 다음 MEDIA_URL을 정의하고 해당 값을 디렉터리를 나타내는 URL로 설정합니다.

웹 서버에서 사용하는 계정에 디렉터리에 대한 쓰기 권한이 있는지 확인하세요.

2. 모델에 FileField 또는 ImageField를 추가하고 Django에서 upload_to 항목이 정의되었는지 확인합니다.

MEDIA_ROOT의 어느 하위 디렉토리를 사용하여 파일을 저장해야 하는지 알아보세요.

3. 데이터베이스에 저장되는 것은 파일의 경로뿐입니다(MEDIA_ROOT에 대한 상대 경로입니다). 여러분은 Django가 제공하는 편리한 url 속성을 활용하는 것을 생각해 보셨을 것입니다. 예를 들어 ImageField 이름이 cup_shot인 경우

템플릿에서

{{ object.mug_shot.url }}


을 사용할 수 있습니다. 이미지의 전체 URL입니다.

예를 들어 MEDIA_ROOT가 '/home/media'로 설정되고 upload_to가 다음으로 설정되었다고 가정합니다. '사진/%Y/%m/%d'. upload_to의

중 '%Y/%m/%d'는 strftime()이고, '%Y'는 4자리 연도, '%m'은 2자리 월, '%d'입니다. '는 두 분 모두를 위한 Days입니다.

2007년 1월 15일에 파일을 업로드한 경우 파일은 /home/media/photos/2007/01/15 디렉토리에 저장됩니다.

업로드된 파일의 로컬 파일 이름, 파일 URL 또는 파일 크기를 얻으려면 name, url 및 size 속성을 사용할 수 있습니다.

참고: 파일을 업로드할 때 저장하는 파일의 위치와 유형에 주의하세요. 이렇게 하는 이유는 보안 취약점을 피하기 위해서입니다. 업로드된 각

파일을 확인해야 업로드된 파일이 원하는 파일인지 확인할 수 있습니다. 예를 들어

업로드된 파일을 확인하지 않고 맹목적으로 다른 사람이 파일을 업로드하도록 허용하는 경우, 파일이 저장된 디렉터리가 웹 서버의 루트 디렉터리에 있는 경우, 누군가 CGI 또는 PHP를 업로드하는 경우

스크립트를 작성한 후 스크립트 URL에 접속하여 업로드된 스크립트를 실행하는 것은 너무 위험합니다. 이런 일이 발생하지 않도록 하세요!

기본적으로 데이터베이스에 있는 FileField 인스턴스의 해당 열은 varchar(100)입니다. 다른 필드와 마찬가지로 max_length를 사용할 수 있습니다. 매개변수는 필드의 최대 길이를 변경합니다.

FileField 및 FieldFile

클래스 FieldFile

모델의 FileField

필드에 액세스하면 FieldFile의 인스턴스가 프록시로 제공됩니다. 기본 레이어에 액세스합니다. 인스턴스에는 파일 데이터와 상호 작용하는 데 사용할 수 있는 여러 속성과 메서드가 있습니다.

FieldFile.url

파일의 상대 URL에 액세스하려면 읽기 전용 방식으로 기본 스토리지 클래스의 url() 메서드를 호출하세요.

FieldFile.open(mode='rb')

파이썬의 open() 메서드와 유사합니다.

FieldFile.close()

파이썬의 close() 메서드와 유사합니다.

FieldFile.save(name,content,save=True)

이 메서드는 파일 이름과 파일 콘텐츠를 필드에 전달한 다음 모델에 저장합니다. 이 방법에는 두 가지 필수 매개변수(이름, 파일 이름, 콘텐츠)가 필요합니다. 파일의 내용을 포함하는 객체입니다. 저장 매개변수는 선택사항이며 주로

는 파일 수정 후 인스턴스 저장 여부를 제어합니다. 기본값은 True 입니다. 콘텐츠 매개변수는 django.core.files.File이라는 점에 유의하세요. Python의 내장 File 객체가 아닌 의 인스턴스입니다. 다음과 같이

을 사용하여 기존 Python 파일 객체에서 파일을 빌드할 수 있습니다.

from django.core.files import File

# Python의 내장 기능을 사용하여 기존 파일을 엽니다. open()

f = open('/tmp/hello.world')
myfile = File(f)


또는 문자열로 구성:

from django.core.files.base import ContentFile

myfile = ContentFile("hello world")



FieldFile.delete(save=True)

삭제 이 파일과 관련된 파일 인스턴스를 삭제하고 이 필드의 모든 속성을 지웁니다.

참고: delete()가 호출될 때 파일이 열려 있는 경우 이 메서드는 파일을 닫습니다.

저장 매개변수는 선택사항이며 파일 삭제 후 인스턴스 저장 여부를 제어합니다. 기본값은 True 입니다.

모델 삭제 시 관련 파일은 삭제되지 않으니 주의하시기 바랍니다. 이러한 고아 파일을 삭제하려면 직접 처리해야 합니다(예를 들어 정리 명령을 수동으로 실행하거나 cron을 통해 정기적으로 정리 명령을 실행할 수 있음)

FilePathField

class FilePathField(경로=없음 [, 일치=없음, 재귀=False, max_length=100, **options])

파일 시스템 아래 디렉터리의 특정 파일을 선택하는 데 사용되는 CharField입니다. 세 개의 독점 매개변수가 있으며 첫 번째 매개변수

만 필수입니다.

FilePathField.path

이 매개변수는 필수입니다. FilePathField가 파일을 선택하는 데 사용하는 디렉터리의 절대 경로입니다. 예: "/home/images".

FilePathField.match

선택적 매개변수. FilePathField가 파일 이름을 필터링하는 데 사용하는 정규식 문자열입니다. 기준에 맞는 파일만

파일 선택 목록에 나타납니다. 정규식은 파일 경로가 아닌 파일 이름만 일치합니다. 예를 들어 "foo.*.txt$"는

foo23.txt와만 일치하고 bar.txt 및 foo23.gif와는 일치하지 않습니다.

FilePathField.recursive

선택적 매개변수입니다. 해당 값은 True 또는 False입니다. 기본값은 거짓입니다. 경로 아래에 하위 디렉터리를 포함할지 여부를 지정합니다.

FilePathField.allow_files

이 항목은 Django 1.5에 새로 추가된 항목입니다. 값이 True 또는 False인 선택적 매개변수입니다. 기본값은 다음과 같습니다. 진실. 지정된 위치에 파일을 포함할지 여부를 지정합니다. 이 항목과 allowed_folders 중 하나가 True여야 합니다.

FilePathField.allow_folders

Django 1.5의 새로운 콘텐츠. 선택적 매개변수이며 해당 값은 True 또는 False입니다. 기본값은 거짓입니다. 지정된 위치에 디렉터리를 포함할지 여부를 지정합니다. 이 항목 중 하나와 Allow_files는 다음과 같아야 합니다. 진실.

앞서 언급했듯이 일치는 파일 경로가 아닌 파일 이름만 일치합니다. 따라서 다음 예:

FilePathField(path="/home/images", match="foo.*", recursive=True)

는 /home/images/와 일치합니다. /home/images/foo/bar.gif 대신 foo.gif. 이는 일치 항목만 파일 이름과 일치하기 때문입니다.
(foo.gif 및 bar.gif).

기본적으로 데이터베이스에 있는 FilePathField 인스턴스의 해당 열은 varchar(100)입니다. 다른 필드와 마찬가지로 max_length를 사용할 수 있습니다. 매개변수는 필드의 최대 길이를 변경합니다.

FloatField

class FloatField([**options])

이 필드는 Python의 float 인스턴스를 사용하여 부동 소수점 숫자를 나타냅니다.

기본 양식 위젯은 TextInput입니다.

FloatField와 DecimalField의 차이점에 유의하세요.

이미지 필드

클래스 ImageField(upload_to=None[, height_field=None, width_field=None, max_length=100,**options])

업로드된 개체가 합법적인 이미지 파일인지 확인한다는 점을 제외하면 FileField와 동일합니다.

FileField에서 유효한 매개변수 외에도 ImageField는 File.height 및 File.width 두 가지 속성을 사용할 수도 있습니다. .

두 가지 선택적 매개변수가 있습니다:

ImageField.height_field

이미지 높이를 보유하는 필드의 이름입니다. 개체를 저장할 때 이미지 파일은 이 필드에 설정된 높이에 따라 크기가 조정되고 변환됩니다.

ImageField.width_field

이미지의 너비를 저장하는 필드 이름입니다. 개체를 저장할 때 이미지 파일은 이 필드에 설정된 너비에 따라 크기가 조정되고 변환됩니다.

기본적으로 ImageField 인스턴스는 데이터베이스의 varchar(100)에 해당합니다. 목록. 다른 필드와 마찬가지로 max_length 매개변수를 사용하여 필드의 최대 길이를 변경할 수 있습니다.

IntegerField

class IntegerField([**options])

정수 필드입니다. 기본 양식 위젯은 TextInput입니다.

IPAddressField

class IPAddressField([**options])

IP 주소 필드를 문자열 형식(예: "192.0.2.30")으로 나타냅니다. 기본 양식 위젯은 TextInput입니다.

GenericIPAddressField

class GenericIPAddressField([**options])

Django1.4의 새로운 기능입니다.

IP4 또는 IP6 주소 필드를 문자열 형식(예: "192.0.2.30" 또는 "2a02:42fe::4")으로 나타냅니다. 기본 양식 위젯은 TextInput입니다.

IPv6 주소 형식은 RFC 4291 섹션을 따릅니다. 2.2. 예를 들어, 이 주소가 실제로 IPv4 주소인 경우 마지막 32비트는 "::ffff:192.0.2.0"과 같이 십진수로 표시될 수 있습니다.

2001:0::0:01은 2001::1로 쓸 수 있고, ::ffff:0a0a:0a0a는::ffff:10.10.10.10으로 쓸 수 있습니다. 문자는 모두 소문자입니다.

GenericIPAddressField.protocol

입력 프로토콜의 유효성을 확인합니다. 기본값은 IPv4 또는 IPv6인 'both'입니다. 이 항목은 대소문자를 구분하지 않습니다.

GenericIPAddressField.unpack_ipv4

::ffff:192.0.2.1 과 같은 IPv4 매핑 주소를 설명합니다. 이 옵션이 활성화되면 주소는 192.0.2.1 로 해석됩니다. 기본값은 비활성화되어 있습니다. 경우에만 프로토콜이 '모두'로 설정된 경우에만 활성화할 수 있습니다.

NullBooleanField

class NullBooleanField([**options])

BooleanField와 유사하지만 추가 NULL 옵션이 있습니다. null=True 옵션이 있는 BooleanField 대신 이 필드를 사용하는 것이 좋습니다.

기본 양식 위젯은 NullBooleanSelect입니다.

PositiveIntegerField

class PositiveIntegerField([**options])

IntegerField와 유사하지만 필드 값은 음수가 아니어야 합니다.

PositiveSmallIntegerField

class PositiveSmallIntegerField([**options])

는 PositiveIntegerField와 유사하지만 값 범위가 더 작고 데이터베이스 설정에 따라 제한됩니다.

SlugField

class SlugField([max_length=50, **options])

슬러그는 이벤트에 대한 짧은 레이블을 가리키는 뉴스 용어입니다. 문자, 숫자, 밑줄 또는 하이픈으로만 구성할 수 있습니다. 일반적으로 URL의 일부로 사용됩니다.

CharField와 유사하게 max_length를 지정할 수 있습니다(이 섹션에 언급된 데이터베이스 호환성 및 max_length에 유의하세요). 지정하지 않은 경우 max_length, Django는 필드 길이를 기본적으로 50으로 설정합니다.

이 필드는 Field.db_index를 자동으로 True로 설정합니다.

다른 필드의 값을 기반으로 슬러그 필드를 자동으로 채우는 것이 유용합니다. Django 관리자에서 prepopulated_fields를 사용할 수 있습니다. 이것을 하기 위해.

SmallIntegerField

class SmallIntegerField([**options])

는 IntegerField와 유사하지만 값의 범위가 더 작고 데이터베이스 제한으로 인해 제한됩니다.

TextField

class TextField([**options])

큰 텍스트 필드입니다. 기본 양식 위젯은 Textarea입니다.

TimeField

class TimeField([auto_now=False, auto_now_add=False, **옵션])

이 필드는 Python의 datetime.time 인스턴스를 사용하여 시간을 나타냅니다. DateField와 동일한 자동 완성 매개변수를 허용합니다.

기본 양식 위젯은 TextInput입니다.

URLField

URL을 저장하는 클래스 URLField([max_length=200, **options])

CharField입니다.

모든 CharField 하위 클래스와 마찬가지로 URLField는 선택적 max_length 매개변수를 허용하며 기본값은 200입니다.

위 내용은 Django 문서 - Model field type(FieldTypes) 내용입니다. 더 많은 관련 글은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿