source

null=True와 blank=의 차이점은 무엇입니까?장고에서 사실인가요?

itover 2022. 10. 18. 23:19
반응형

null=True와 blank=의 차이점은 무엇입니까?장고에서 사실인가요?

Django에서 모델 필드를 추가할 때 일반적으로 다음과 같이 씁니다.

models.CharField(max_length=100, null=True, blank=True)

로 하다도 입니다.ForeignKey,DecimalField기타. 다음의 기본적인 차이점은 무엇입니까?

  1. null=True
  2. blank=True
  3. null=True ★★★★★★★★★★★★★★★★★」blank=True

것에 관하여CharField,ForeignKey,ManyToManyField,DateTimeField 을 사용할 장점과 입니까?옵션 1, 2, 또는 3을 사용할 경우의 장점과 단점은 무엇입니까?

null=TrueNULL (비밀(이행)NOT NULL 을 공백으로 . 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고 장고.DateTimeField ★★★★★★★★★★★★★★★★★」ForeignKey will will will will will will will will will 로 저장됩니다.NULLDB db db db 、 [ DB 。

blank필드에 폼이 필요한지 여부를 결정합니다.관리자 ifblank=True 만약 필수가 '은 필수입니다False이데올로기 때문에

두 때 하기 에 이 두 가지 조합은 일반적으로 양식에서 필드를 공백으로 만들려면 데이터베이스도 필요합니다.NULL값을 지정합니다., 예외는 것입니다.CharField §TextFieldS, 장고에서는 절대 저장되지 않습니다.NULL빈 문자열(.는 DB)로됩니다.''를 참조해 주세요.

몇 가지 예:

models.DateTimeField(blank=True) # raises IntegrityError if blank

models.DateTimeField(null=True) # NULL allowed, but must be filled out in a form

이 두 옵션은 수 ,null=True, blank=False셸과 같은 개체를 처리할 때 필드를 항상 폼으로 입력해야 하는 경우 선택 사항입니다.)

models.CharField(blank=True) # No problem, blank is stored as ''

models.CharField(null=True) # NULL allowed, but will never be set as NULL

CHAR ★★★★★★★★★★★★★★★★★」TEXT는 절대 .NULL의해, 고고해의의 by by bynull=True그런데수동으로 설정할 수 .None 정하다NULL, 꼭 포함시켜야 null=True.

은 ORM을 .blank&null[ . 8 ]의

class Test(models.Model):
    charNull        = models.CharField(max_length=10, null=True)
    charBlank       = models.CharField(max_length=10, blank=True)
    charNullBlank   = models.CharField(max_length=10, null=True, blank=True)

    intNull         = models.IntegerField(null=True)
    intBlank        = models.IntegerField(blank=True)
    intNullBlank    = models.IntegerField(null=True, blank=True)

    dateNull        = models.DateTimeField(null=True)
    dateBlank       = models.DateTimeField(blank=True)
    dateNullBlank   = models.DateTimeField(null=True, blank=True)        

Postgre용으로 작성된 데이터베이스 필드SQL 9.4는 다음과 같습니다.

CREATE TABLE Test (
  id              serial                    NOT NULL,

  "charNull"      character varying(10),
  "charBlank"     character varying(10)     NOT NULL,
  "charNullBlank" character varying(10),

  "intNull"       integer,
  "intBlank"      integer                   NOT NULL,
  "intNullBlank"  integer,

  "dateNull"      timestamp with time zone,
  "dateBlank"     timestamp with time zone  NOT NULL,
  "dateNullBlank" timestamp with time zone,
  CONSTRAINT Test_pkey PRIMARY KEY (id)
)

MySQL 5.6용으로 작성된 데이터베이스 필드는 다음과 같습니다.

CREATE TABLE Test (
     `id`            INT(11)     NOT  NULL    AUTO_INCREMENT,

     `charNull`      VARCHAR(10) NULL DEFAULT NULL,
     `charBlank`     VARCHAR(10) NOT  NULL,
     `charNullBlank` VARCHAR(10) NULL DEFAULT NULL,

     `intNull`       INT(11)     NULL DEFAULT NULL,
     `intBlank`      INT(11)     NOT  NULL,
     `intNullBlank`  INT(11)     NULL DEFAULT NULL,

     `dateNull`      DATETIME    NULL DEFAULT NULL,
     `dateBlank`     DATETIME    NOT  NULL,
     `dateNullBlank` DATETIME    NULL DEFAULT NULL
)

Django 모델 필드 정의의 옵션은 데이터베이스 테이블의 정의와 모델 폼의 기본 형식 및 유효성 확인의 두 가지 목적(최소한)을 제공하는 것이 중요합니다(커스텀 폼을 제공함으로써 값을 항상 덮어쓸 수 있기 때문에 "기본값"이라고 합니다).일부 옵션은 데이터베이스에 영향을 미치며, 일부 옵션은 양식에 영향을 미치며, 일부는 두 가지 모두에 영향을 미칩니다.

null ★★★★★★★★★★★★★★★★★」blank다른 답변은 전자가 데이터베이스 테이블 정의에 영향을 미치고 후자가 모델 검증에 영향을 미친다는 것을 이미 명확히 하고 있습니다.가능한 4가지 구성 모두에 대한 사용 사례를 살펴보면 그 차이를 더욱 명확하게 할 수 있다고 생각합니다.

  • null=False,blank=False: 에서 값이 이것은 기본 설정이며 모든 상황에서 값이 필요함을 의미합니다.

  • null=True,blank=True: 이는 모든 상황에서 필드가 선택됨을 의미합니다.단, 아래에 기술한 바와 같이 문자열 기반 필드를 옵션으로 하는 방법은 권장되지 않습니다.

  • null=False,blank=True즉, 하지 않지만 에는 값이 이는 폼에 값이 필요하지 않지만 데이터베이스에는 값이 필요함을 의미합니다.여기에는 다음과 같은 다양한 사용 사례가 있습니다.

    • 가장 일반적인 용도는 옵션의 문자열 기반 필드입니다.문서에서 설명한 바와 같이 Django 관용구는 빈 문자열을 사용하여 결측값을 나타냅니다.한다면NULL(도)인 )unique,, 이, 이, 이, 이를 사용해야 null=True복수의 빈 문자열이 일의성 체크에 실패하는 것을 방지합니다).

    • 하나의 은 다른의 값을 으로 한 것입니다.save()를 、 method를 method 。 형식)으로 제공하는 것을 않습니다.blank=True, 에서는 값이 null=False를 참조해 주세요.

    • 는 '보다 낫다'는 것을 때 입니다.ManyToManyField는 옵션입니다.이 필드는 데이터베이스 열이 아닌 별도의 테이블로 구현되므로 의미가 없습니다.가치blank단, 관계가 없는 경우 검증의 성공 여부를 제어하는 폼에 영향을 줍니다.

  • null=True,blank=False이 필요하지만 이는 폼에 값이 필요하지만 데이터베이스는 필요하지 않음을 의미합니다.이것은 가장 자주 사용되지 않는 구성일 수 있지만 다음과 같은 사용 사례가 있습니다.

    • 비즈니스 로직에서 실제로 필요하지 않더라도 사용자에게 항상 값을 포함하도록 요구하는 것은 지극히 합리적입니다.결국 양식은 데이터를 추가하고 편집하는 한 가지 방법일 뿐입니다.휴먼 에디터와 같은 엄격한 검증을 필요로 하지 않는 데이터를 생성하는 코드가 있을 수 있습니다.

    • 활용 는 '아까보다'가 때 입니다.ForeignKey캐스케이드 삭제를 허용하지 않습니다.즉, 통상적인 사용에서는 관계가 항상 존재해야 한다(blank=False이 오브젝트도 삭제되지 않도록 주의해 주세요., 「 」를 할 수 .null=True ★★★★★★★★★★★★★★★★★」on_delete=models.SET_NULL간단한 소프트 삭제 기능을 구현합니다.

장고 모델 필드 참조: 링크

필드 옵션

다음 인수는 모든 필드 유형에 사용할 수 있습니다.모두 옵션입니다.


null

Field.null

한다면 True, Django는 빈 값을 저장합니다. NULL를 참조해 주세요.기본값은 입니다. False.

null 기반 예: 음음 such such such on such such ) 。CharField ★★★★★★★★★★★★★★★★★」TextField되며, "는 "로 저장되지 않습니다.NULL에 .이 있는 null=True '데이터 '데이터 없음', '데이터 없음', '데이터 없음'이라는 두 수 NULL을 사용하다대부분의 에 대해 두 이지 "데이터 없음"을 사용하는 것이 아닙니다. 장고 d d d d d d d d d d d d d d d d d d d d d.NULL.

필드와 스트링 모두, 「」를 설정할 .blank=True하는 경우 로 합니다.null스토리지에만 을 줍니다( ).blank를 참조해 주세요.

메모

Oracle 데이터베이스 백엔드를 사용하는 경우 이 속성에 관계없이 빈 문자열을 나타내기 위해 NULL 값이 저장됩니다.


blank

Field.blank

ifTrue을 사용하다은 "Default" 입니다.False.

는 '하다'와 '다르다'가 해 주세요.nullnull는 순전히 와 관련된 단, 「데이터베이스 관련」은 「데이터베이스'와 관련되어 있습니다.blank는 검증과 관련되어 있습니다.에 '하다'가 있는 경우blank=True폼 검증에서는 빈 값을 입력할 수 있습니다.에 '하다'가 있는 경우blank=False필드는 필수입니다.

당신은 답을 가지고 있을지도 모릅니다만, 지금까지도 이 질문에 대한 판단을 내리기는 어렵습니다.null=True또는blank=True둘 다 들판으로.저는 개인적으로 개발자들에게 너무 많은 옵션을 제공하는 것은 상당히 쓸모없고 혼란스럽다고 생각합니다.Null 또는 공백은 원하는 대로 처리하도록 합니다.

'장고의 두 스쿠프'에 나오는 표를 따라갑니다.

Table showing when to use null or blank for each field type

간단하게null=True데이터베이스가 승인해야 하는 정의NULL값, 반면blank=True폼 검증 시 이 필드는 공백 값을 허용해야 하는지 여부를 정의합니다(If If If).blank=True해당 필드에 값이 없는 형식을 받아들입니다.blank=False[default validation](기본값)은 폼 검증 시 This field is required error(이 필드는 필수 오류입니다)

null=True/False데이터베이스 관련

blank=True/False폼 검증과 관련된

다음은 이 필드의 예입니다.blank= True그리고.null=True

description = models.TextField(blank=True, null= True)

이 경우:blank = True: 설명 필드를 공백으로 둘 수 있음을 폼에 알립니다.

그리고.

null = True: 데이터베이스에는 db필드에 늘 값을 기록해도 문제가 없음을 알립니다.

설정했을 경우null=True데이터베이스 컬럼의 값을 다음과 같이 설정할 수 있습니다.NULL설정만 하면blank=True, django는 컬럼의 기본 새 값을 다음과 같이 설정합니다."".

한 가지 포인트는null=True에도 필요하다CharField또는TextField데이터베이스에는 컬럼에 플래그가 설정되어 있습니다.이 경우 다음을 사용해야 합니다.

a_unique_string = models.CharField(blank=True, null=True, unique=True)

가급적 생략합니다.null=True비포함용 CharField또는TextField그렇지 않으면 일부 필드는 다음과 같이 설정됩니다.NULL다른 사람들은 로서""필드 값을 확인해야 합니다.NULL매번.

의 디폴트값null및 공백은 다음과 같습니다.False.

Null: 데이터베이스 관련입니다.지정된 데이터베이스 열의 null 값 허용 여부를 정의합니다.

Blank: 검증과 관련되어 있습니다.폼 확인 중 호출 시 사용됩니다.form.is_valid().

그렇다고는 해도, 와의 싸움은 지극히 괜찮다.null=True그리고.blank=False데이터베이스 수준에서 필드는 다음과 같습니다.NULL단, 어플리케이션레벨에서는 필수 필드입니다.

대부분의 개발자가 잘못 알고 있는 부분은 다음과 같습니다.정의null=True다음과 같은 문자열 기반 필드의 경우CharField그리고.TextField. 그렇게 하지 마세요.그렇지 않으면 "데이터 없음"에 대해 두 가지 값, 즉 빈 문자열이 있을 수 있습니다."데이터 없음"에 대해 두 가지 가능한 값을 갖는 것은 중복됩니다.장고 규약은 빈 문자열을 사용하는 것이지NULL.

null = True

필드를 채울 데이터베이스 제약이 없으므로 이 옵션을 가진 채워진 값에 대해 null 값을 가진 개체를 가질 수 있습니다.

blank = True

django 형식의 검증에 제약이 없음을 의미합니다.그래서 당신이 a를 채울 때modelForm이 모델의 경우 이 옵션을 채우지 않고 필드를 떠날 수 있습니다.

여기, 의 주요 차이점입니다.null=True그리고.blank=True:

둘 다 기본값입니다.null그리고.blank거짓입니다.이러한 값은 모두 필드 수준에서 작동합니다. 즉, 필드를 유지할 것인지 여부입니다.null또는blank.

null=True필드의 값을 로 설정합니다.NULL즉, 데이터가 없습니다.기본적으로 데이터베이스 열 값을 위한 것입니다.

date = models.DateTimeField(null=True)

blank=True필드에 폼이 필요한지 여부를 결정합니다.여기에는 관리자 및 사용자 정의 양식이 포함됩니다.

title = models.CharField(blank=True) // title can be kept blank.데이터베이스 내("")저장됩니다. null=True blank=True즉, 이 필드는 모든 상황에서 선택 사항입니다.

epic = models.ForeignKey(null=True, blank=True)
// The exception is CharFields() and TextFields(), which in Django are never saved as NULL. Blank values a

null = True || blank = True || null = True && blank = True

class TestModel(models.Model):
    field1 = models.CharField(max_length=100, null=True)
    field2 = models.CharField(max_length=100, blank=True)   # it's not a correct way
    field3 = models.CharField(max_length=100, null=True, blank=True)

DB 필드:MySQL

CREATE TABLE TestModel (
     `id`        INT(10)        NOT     NULL      AUTO_INCREMENT,

     `field1`    VARCHAR(100)   NULL    DEFAULT   NULL,
     `field2`    VARCHAR(100)   NOT     NULL,
     `field3`    VARCHAR(100)   NULL    DEFAULT   NULL,
)

케이스 01:null = True

db:   db   field is accepts null value
form: form field is `required`

NB: DB IS ACCEPTS NULL VALUE, BUT FORM FIELD IS REQUIRED. SO FORM IS 
SUBMITTED WHEN THIS FIELD HAVE SOME VALUE. it's good.

케이스 02:blank = True

db:   db   field is not accepts null value
form: form field is `optional`

NB: FORM IS VALID WITHOUT ANY VALUE, BUT DB IS NOT ACCEPTS NULL VALUE.
SO THE FORM IS SUBMITTED WITHOUT ANY VALUE THEN BOOM. it's worst.

케이스-03:null = True && blank = True

db:   db   field is accepts null value
form: form field is `optional`

NB: HERE FORM FIELD IS OPTIONAL & FORM IS VALID WITHOUT ANY VALUE 
& DB ALSO ACCEPTS NULL VALUE. SO, IT'S BEST TO USE `null=True && blank=True`

:)

Django 관리에서 저장하면 Django 레벨과 Database 레벨의 2단계 검증이 이루어집니다.숫자 필드에 텍스트를 저장할 수 없습니다.

데이터베이스에 데이터 유형이 있습니다.NULL,그건 아무 일도 아니다.Django는 데이터베이스에 열을 작성할 때 열을 비워 둘 수 없음을 지정합니다.그리고 당신이 구하려고 노력한다면NULL데이터베이스 오류가 발생합니다.

또, Django-Admin 레벨에서는, 디폴트로 모든 필드가 필요하기 때문에, 빈 필드는 보존할 수 없습니다.Django는 에러를 발생시킵니다.

따라서 빈 필드를 저장하려면 Django 및 데이터베이스 수준에서 허용해야 합니다. - 관리 패널에서 빈 필드를 허용합니다. - 저장을 허용합니다.NULL데이터베이스 열로 이동합니다.

null데이터베이스용이고 공백은 텍스트 필드 등의 사용자 인터페이스에 표시하여 사용자의 성을 가져오는 필드 검증용입니다.lastname=syslog.charfield(공백=true)인 경우 성을 입력하라는 메시지가 표시되지 않습니다.이 필드는 이제 옵션 필드이기 때문입니다.lastname=syslog.charfield(syslog=true)인 경우 이 필드가 사용자로부터 값을 받지 못하면 빈 문자열 " "로 데이터베이스에 저장됨을 의미합니다.

간단한 답변은 Null은 데이터베이스 테이블용이고 Blank는 Django Forms용입니다.

Null은 순수하게 데이터베이스와 관련된 반면 공백은 검증과 관련된 것입니다.필드가 공백인 경우=True: Django 관리 사이트에서 검증하면 빈 값을 입력할 수 있습니다.필드에 공백=False가 있는 경우 필드는 필수입니다.

Blank=False # this field is required.
Null=False # this field should not be null

Blank=True # this field is optional.
Null=True # Django uses empty string (''), not NULL.

주의: 사용을 피합니다.null=True다음과 같은 문자열 기반 필드에서CharField그리고.TextField그리고.FileField/ImageField.

참조: 장고 늘, 장고 블랭크

간단한 답변은 다음과 같습니다.

타고null = True우리는 데이터베이스에 모델의 이 필드가 NULL일 수 있다고 말하고 있습니다.blank = True우리는 장고에게 모델의 이 필드가 NULL일 수 있다고 말하고 있다.

아주 간단한 로 하자면

공백이 null과 다릅니다.

null순전히 데이터베이스와 관련된 것이며 공백은 검증과 관련된 것입니다(형식은 필수).

한다면null=True장고 씨는store empty values as NULL in the database필드에 다음 값이 있는 경우blank=True, 폼 검증은allow entry of an empty value. 필드가 공백=False일 경우 필드가 필요합니다.

null - True의 경우 기본값은 False이며, Django는 빈 값을 null로 데이터베이스에 저장합니다.

blank - 필드를 공백으로 둘 수 있는 경우 기본값은 False입니다.

기타, goto https://docs.djangoproject.com/en/3.0/topics/db/models/

다음 표는 주요 차이점을 보여줍니다.

+--------------------------------------------------------------------+
| Purpose                  | null=True        | blank = True         |
|--------------------------|------------------|----------------------|
| Field can be empty in DB | Do this          | Unaffected           |
|--------------------------|------------------|----------------------|
| ModelForm(required field)| Unaffected       | field not required   |
|--------------------------|------------------|----------------------|
| Form Validation          | Unaffected       | field not required   |
|--------------------------|------------------|----------------------|
| on_delete=SET_NULL       | Need this        | Unaffected           |
+--------------------------------------------------------------------+

null=True and blank=의 의미모델에서 참은 또한 이러한 필드가 양식 클래스에서 정의된 방법에 따라 달라집니다.

다음 클래스를 정의했다고 가정합니다.

class Client (models.Model):
    name = models.CharField (max_length=100, blank=True)
    address = models.CharField (max_length=100, blank=False)

폼 클래스가 다음과 같이 정의되어 있는 경우:

class ClientForm (ModelForm):
    class Meta:
        model = Client
        fields = ['name', 'address']
        widgets = {
            'name': forms.TextInput (attrs = {'class': 'form-control form-control-sm'}),
            'address': forms.TextInput (attrs = {'class': 'form-control form-control-sm'})
        }

그러면 '이름' 필드는 필수 항목이 아닙니다(공백=).모델에서 True) 및 '주소' 필드는 필수입니다(모델에서 공백=False로 인해).

단, ClientForm 클래스가 다음과 같이 정의되어 있는 경우:

class ClientForm (ModelForm):
    class Meta:
        model = Client
        fields = ['name', 'address']

    name = forms.CharField (
        widget = forms.TextInput (attrs = {'class': 'form-control form-control-sm'}),
    )
    address = forms.CharField (
        widget = forms.TextInput (attrs = {'class': 'form-control form-control-sm'}),
    )

그런 다음 두 필드('name'과 'address')가 모두 필수입니다. 선언적으로 정의된 필드는 그대로입니다(https://docs.djangoproject.com/en/3.0/topics/forms/modelforms/),). 즉, 양식 필드의 'required' 속성의 기본값은 True이며, 모델에서 fi가 있더라도 'name'과 'address' 필드가 채워져야 합니다.eld가 공백=참으로 설정되었습니다.

blank=True폼에 값을 입력할 때 해당 필드를 비워둘 수 있는지 여부를 제어하기 위해 임의의 모델 필드로 설정할 수 있습니다.여기에서는 데이터 입력에 대해 이야기하고 있습니다.

null=True를 설정하면,blank=True필드의 경우 해당 모델 필드는 값을 수신하지 않습니다.데이터베이스 또는 Django는 데이터베이스에 데이터를 쓸 때 해당 필드로 작업을 수행해야 합니다.모든 종류의 텍스트 내용에 대해 빈 문자열이 데이터베이스에 저장되므로 데이터베이스에 값이 저장됩니다.날짜 필드나 숫자와 같은 다른 종류의 필드에는 특수 데이터 유형 "null"을 사용합니다.필드에 값이 없을 경우 "null"을 사용할 수 있지만 기본적으로는 Django에서는 "null" 값을 사용할 수 없습니다.그렇기 때문에 명시적으로 설정해 둘 필요가 있습니다.null=True.

셋팅했다고 칩시다.blank=True텍스트 이외의 필드에 대해 "null=True"를 지정하지 않으면 Django는 저장 대상을 알 수 없으며 오류가 발생합니다.

설정할 때null=true그것은 정해질 것이다null필드가 채워지지 않은 경우 데이터베이스에 저장됩니다.설정했을 경우blank=true필드에 값을 설정하지 않습니다.

null=False라고 하는 것은 데이터를 데이터베이스에 전달하여 저장해야 함을 의미합니다.blank=False라고 하는 것은 데이터가 프런트 엔드에서 입력되어야 한다는 것을 의미하며, 그 반대도 마찬가지입니다.

Django 모델의 각 옵션은 두 가지 용도로 사용됩니다.

  1. 데이터베이스 수준에서 필드 제약 조건 정의(예: SQL, Postgresql 또는 기타)
  2. 양식 수준에서 필드 제약 조건 정의(데이터베이스 계층 위에 있는 프레임워크 수준에서)

자, 그럼 다시null그리고.blank

  • blank장고 양식과 관련이 있습니다.관리자 또는 장고에서 장고 형식의 유효성 검사에 사용됩니다.특히 전화할 때form.is_valid()
  • null는 데이터베이스와 관련되어 있습니다.이 컬럼은 기본 데이터베이스에 대해null저장 여부를 지정합니다.

예를 들어, 다음의 예를 참조해 주세요.

class Company(models.Model):
    name = models.CharField(max_length=100)
    website = models.UrlField()
    founded_on = models.DateField(blank=True, null=False)
    random_date = models.DateFeild(blank=False, null=True)
    random_text = models.TextField(null=True, blank=True)

정의되어 있습니다.Company우리가 가지고 노는 두 개의 필드가 있는 모델blank그리고.null옵션들.다른 필드에서 어떤 일이 일어나는지 봅시다.

  • founded_on: 빈칸을 수신할 수 있습니다.string폼 레벨(어느 언어 레벨)에서의 값.데이터베이스에 저장하는 동안 다음을 수행할 수 있습니다.IntegrityError데이터베이스가 다음 명령을 받아들이지 않기 때문입니다.null에 기인하는 가치null존재false.

  • random_date: 다음과 같은 이유로 공백이 허용되지 않으므로 유효성 검사 오류로 인해 폼 수준(프레임워크)에서 빈 값을 수신합니다.blanktrue는 폼레벨에서 제약조건을 설정하고 있습니다.단, 컬럼은 다음과 같이 사용할 수도 있습니다.null데이터베이스 계층에 있습니다.

  • random_text: 이 옵션은 필드를 다음과 같이 저장할 수 있음을 의미합니다.null데이터베이스 계층에 있으며 비어 있습니다.string값은 다음과 같은 이유로 인해 Django 형식의 검증 로직에 따라 유효한 데이터가 될 수 있습니다.blank=True즉, 빈 값은 프레임워크레벨에서 수신할 수 있고 빈 값은 DB레벨에서 저장할 수 있습니다.

이 모든 혼란을 해결하려면 데이터베이스의 커밋을 2층 절차로 간주하십시오.

  • 먼저 프레임워크 수준에서 검증 데이터를 호출할 수 있는 양식을 작성합니다.
  • 둘째, DB 제약 조건을 정의하는 데 도움이 되는 데이터베이스 수준 옵션이 있습니다.

여기서blank프레임워크 레벨에 관한 것입니다.null데이터베이스 레벨의 제약입니다.

null=True그리고.blank=True는 django.db.db.dla의 필드 속성입니다.null은 데이터베이스 관련이고 공백은 검증 관련입니다.

무효

기본값은 입니다.null=False. null=False인 경우 Django는 데이터베이스 열에 NULL 값을 허용하지 않습니다.

한다면null=TrueDjango는 데이터베이스 컬럼에 빈 값을 NULL로 저장합니다.CharField 및 TextField의 경우 django는 NULL 대신 빈 문자열 "을 사용합니다. CharField 및 TextField에는 NULL 속성을 사용하지 마십시오.한 가지 예외는 CharField가unique=True그리고.blank=True,그리고나서null=True필수 항목입니다.

백지

기본값은 입니다.blank=False. blank = False일 경우 필드가 필요합니다.

한다면blank=True필드는 옵션이며 공백으로 둘 수 있습니다.빈칸 =null=False일 경우 true는 누락된 값을 프로그래밍 방식으로 설정하려면 모델에 clean()을 구현해야 합니다.

문서에 따르면 null은 실제로 데이터베이스와 관련되어 있습니다.null=true이면 DB는 null 입력을 null로 저장합니다.그렇지 않으면 빈 문자열이 빈 문자열로 저장됩니다.반면 blank=true일 경우 폼은 OK로 유효성을 검사하고 그렇지 않을 경우 폼에서는 필드가 '필수'로 간주됩니다.

둘 다 디폴트로는 false

언급URL : https://stackoverflow.com/questions/8609192/what-is-the-difference-between-null-true-and-blank-true-in-django

반응형