2014-11-14 2 views
1

Django Model 설명서에 따르면 nullblank 옵션의 기본값은 False입니다. 그렇다면 명시 적으로 제공하지 않으면 IntegerField의 기본값은 무엇입니까? 또한 CharField 등이 도움이 될 것입니다.Django 필드의 기본값은 무엇입니까?

+1

여기 장고를 설치하지 않아도 소스 코드에서 IIRC를 찾을 수 있습니다. 기본값을 지정하지 않으면 모든 필드의 기본값이' None'을 SQL NULL로 변환합니다. 필드 정의에'null = False'를 남겨두면 당연히 데이터베이스 레벨에서 예외를 발생시켜야합니다. 하지만 직접 시도해보고 스스로 찾아 내야합니다 (이미 장고 프로젝트가있는 경우 5 분이 소요됩니다). –

+0

@ brunodesthuilliers, 감사합니다. – norbertpy

답변

3

우리가 필드 방법

def has_default(self): 
    """ 
    Returns a boolean of whether this field has a default value. 
    """ 
    return self.default is not NOT_PROVIDED 

def get_default(self): 
    """ 
    Returns the default value for this field. 
    """ 
    if self.has_default(): 
     if callable(self.default): 
      return self.default() 
     return force_text(self.default, strings_only=True) 
    if (not self.empty_strings_allowed or (self.null and 
       not connection.features.interprets_empty_strings_as_nulls)): 
     return None 
    return "" 

을에서 볼 수 있듯이 그것은 IntegerField 때문에 empty_strings_allowed = False의에 대한 None 될 것이며, 값이되지 int()

로되어 있기 때문에 그 후 생성하거나 저장에 당신은 ValidationError()을 얻을 것이다 CharField에 대해 CharFieldempty_strings_allowed = True

PS를 가지므로 빈 문자열을 가져옵니다. 장고 documentaion에서의로 CharFieldnull=TrueTextField을 사용하지 않는 빈 문자열 값을 항상하지 NULL로, 빈 문자열로 저장되기 때문에 문자열 기반 등 CharField 등의 분야와 텍스트 필드에 null을 사용하여

피 말한다. 문자열 기반 필드가 null = True 인 경우 은 "데이터 없음"에 대해 가능한 두 가지 값 : NULL 및 빈 문자열을 가짐을 의미합니다. 대부분의 경우, "데이터 없음"에 대해 가능한 두 가지 값을 갖는 것은 불필요합니다. Django 규칙은 NULL이 아닌 빈 문자열을 사용하는 것입니다.

관련 문제