2011-08-26 3 views
1

큰 proble 있습니다. 필자는 다양한 필드를 포함하는 양식을 구현했으며, 그 중 EmailFIeld는 선택 항목이어야합니다. 여기 Django 모델 문제

모델입니다 :

email = models.EmailField(max_length=50,blank=True,default='[email protected]', 
      verbose_name=_('email'), help_text=_('Email')) 

하지만 양식의 검증을하고 가능한 erorrs와 JSON을 반환 할 때, 나는 항상 나타납니다

{'errors':'Enter a valid e-mail address'} 

을 나는 할 수 있도록하려면 전자 메일 필드를 선택적으로 두십시오. 어떻게해야합니까?

답변

3

사용자가 지정한 주소를 삭제하지 않으면 기본값은이 필드가 비어 있지 않음을 의미합니다. 따라서이 유효성 검사 오류는 .spec이므로 .com으로 바꾸십시오. 또한 모델에 null = True을 추가하고 양식 클래스에 required = False을 추가 할 수 있습니다.

0

이메일을 필요로하는 모델을 처음 설치하는 경우이를 변경하고 syncdb를 실행하면 기본 SQL을 변경하여 필드가 필요하지 않도록 할 수 있습니다.

중요한 데이터가없고 데이터베이스를 지울 수있는 경우 python manage.py flush을 실행할 수 있습니다. 그러면 모든 데이터가 지워지고 syncdb가 처음부터 실행됩니다.

더 나은 옵션은 sql을 django 모델로 업데이트하기 위해 데이터베이스 마이그레이션을 실행하는 것입니다. Django에서 가장 많이 사용되는 옵션은 South입니다. 그것은 거의 필수적인 도구입니다, 이것은 당신의 레퍼토리에 그것을 추가하기에 좋은시기입니다.