2009-12-30 3 views
2

여러 시간 필드가있는 모델 (및이를 기반으로하는 모델 양식)이 있습니다. 사용자가 일부 비워 둘 수 있도록이 필드를 선택적으로 지정합니다. 내 문제는 이러한 필드 중 하나 이상이 비어있는 인스턴스를 저장하려고하면 "열 'mechreturn_tm'null이 될 수 없습니다."오류가 계속 발생한다는 것입니다. 나는 다음 접근법을 사용했다.Blank/null에 관한 TimeField 질문

mechreturn_tm = models.TimeField(blank=True, null=False) 
mechreturn_tm = models.TimeField(blank=True, null=True) 
mechreturn_tm = models.TimeField() 

아무 것도 작동하지 않는 것 같다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

그'(빈 = 사실, 진정한 = NULL)'작동해야 두 번째. 모델 테이블을 놓고'syncdb'를 다시 실행 했습니까? db 쉘에서'describe

'을 실행하거나 테이블을 생성하는 방법을 보려면'manage.py sql '를 시도하십시오. – tcarobruce

답변

1

두 번째 방법 (공백과 null을 모두 True으로 설정)을 사용해도 오류가 계속 발생합니까?

syncdb는 기존 테이블을 변경하지 않으므로이 변경 작업을 수행 할 때 DB 테이블을 다시 만들어야합니다. 그래서 올바른 코드라도 오류가 발생했을 수 있습니다.

모델 필드에 blank=True을 설정하면 필드가있는 양식의 유효성을 검사 할 때 해당 필드를 비워 둘 수 있습니다.

설정 null=True은 해당 필드에 대해 값없이 모델을 DB에 저장할 수 있음을 의미합니다.

http://docs.djangoproject.com/en/dev/topics/db/models/#field-options

+0

John과 tcarobruce에게 감사드립니다. 나는 이것이 테이블을 먼저 지우지 않고 각각의 변경 후에 syncdb를 시도해 왔기 때문에 이것이 문제라고 생각한다. 변경된 코드가있는 테이블을 삭제 한 다음 다시 작성합니다. – kjarsenal

+0

다시 한번 감사드립니다. mechreturn_tm = models.TimeField (공백 = True, null = True)가 정상적으로 작동했습니다. – kjarsenal

+0

모델을 변경할 때마다 Syncdb를 사용하지 말고 대신 South를 사용하십시오. – Pawan