2011-01-03 3 views
1

편집 : 3-4 주 후에 다시 시도했는데이 문제가 다시 발생하지 않았습니다. 이유가 확실하지 않습니다. Django가 처음이 문제를 만났을 때 NOT NULL 제약 조건을 던지지 않고 있다는 것에 상당히 놀랐습니다. 그러나 지금, 3-4 주 후에 다시 시도해도 괜찮습니다. 이유가 확실하지 않습니다.Django 모델은 NOT NULL로 정의 된 필드에 공백 값을 허용합니다.

어쨌든이 질문은 더 이상 유효하지 않습니다.

저는 장고 초보예요.

내 모델에는 NOT NULL로 정의 된 두 개의 필드가있는 클래스가 있습니다.

p=Post(title='test') 
p.save() 

되지 않는 이유는 무엇 :

class Post(models.Model): 
    title = models.CharField(max_length=60) 
    create_date=models.DateField(verbose_name='created Date') 

내가 (manage.py 쉘을 통해) 명령 줄로 이동하고 다음을 수행하여 새 게시물의 인스턴스를 생성, 장고 데이터베이스에 항목을 저장 관리자 패널에서 같은 것을 시도 할 때와 같은 오류가 발생합니까?

답변

2

몇 가지 질문

  1. 사용하는 장고의 어떤 버전

    ?
  2. 어떤 데이터베이스를 사용하고 있습니까?
  3. 쉘을 통해 저장 한 후 데이터베이스 레코드를 보면 create_date의 데이터베이스에있는 것이 무엇입니까?
  4. 데이터베이스의 테이블에 대한 스키마 정의를 보면 create_date에 대해 null이 허용됩니까? 기본 세트가 있습니까?

아직이 코드를 사용해 볼 기회가 없었지만,이게 무슨 일이 일어나고 있는지에 대한 추측입니다.

django 관리자가 저장을 중지하고 오류를 줄 수있는 양식 유효성 검사를 사용하고 있습니다.

셸을 사용하면 모델에 유효성 검사가 없어 저장이 가능하며, 데이터베이스에 의존하여 null이 허용되는 데이터 문제를 포착합니다. 내 추측은 데이터베이스가이 값을 null로 허용하고 오류를 던지지 않으므로 아무런 문제없이 저장할 수 있다는 것입니다.

Django 1.2에서는 폼 검사기와 유사한 모델 유효성 검사기를 추가했습니다. 자세한 내용은이 링크를 확인하십시오. 나는 위의 질문에 대한 답을 알고하지 않기 때문에

http://docs.djangoproject.com/en/1.2/ref/models/instances/#validating-objects

다시 한번, 난 그냥 여기 추측을 복용하고 있습니다. 당신이 저에게 그 대답을 얻을 수 있다면 당신에게 더 나은 대답을 줄 수 있어야합니다.

+0

흠 이것은 매우 이상하지만 나는 이것을 다시 시험해 보았고 잘 작동하고있는 것처럼 보였다 (not-null 제약 조건을 던집니다). 3-4 주 전에이 질문을했기 때문에 그때부터 내가 어떤 변화를했는지 확신 할 수 없습니다. 그렇다고해도 대부분은 사소한 변화이지만 지금은 그렇게해야합니다. 나는 장고 1.2.3을 PostgreSQL과 함께 사용하고있다. –

관련 문제