2013-07-25 1 views
0

내 웹 페이지의 가입보기 (아래) 장고의 인증 모델을 통해 새로운 사용자, 사용자를 생성 한 후 새로 생성 된 사용자의 ID가 내 자신의 모델, 계정을 통해 더 많은 정보를 추가하는 것을 사용한다. 사용자., IntegrityError

IntegrityError at /account/signup/ 
null value in column "user_id" violates not-null constraint 
: 내 문제는 내가 두 번째 모델 ( account.Users에서 외래 키 열을) 새 사용자의 ID를 전달하고 있지만, 내가 열 * USER_ID *가되지 null이 제약 조건을 위반 오류가 계속한다는 것입니다

class Users(models.Model): 
    user = models.ForeignKey(User, unique=True, null=True, blank=True) 
    firstname = models.CharField(max_length=100, blank=True, default='') 

그리고 내보기의 관련 부분 :

def signup(request): 
    if request.method == 'POST' and request.POST['firstname']: 
    user = User.objects.create_user(request.POST['username'], request.POST['email'], request.POST['password']) 
    userId = user.id 
    form = UsersForm(request.POST, request.FILES) 
    if form.is_valid(): 
     cmodel = form.save() 
     cmodel.user_id = userId 
     cmodel.firstname = request.POST['firstname'] 
     cmodel.save() 

것은 무엇 ㄴ 수 있습니다 여기에

는 관련 내 모델의 부분이다 이 오류의 이유는 무엇입니까? 이외에도 * cmodel.user_id 설정에서

*이 userId를 같으면 I는 첫 번째 단계에서 생성 사용자 오브젝트뿐만 아니라 문자열 INT ('1'과 같음 1을 설정 시도 , 각각). 매번 같은 오류가 발생합니다. 또한 필드를 cmodel.user으로 변경하려고했습니다. Django의 오류 페이지에서 변수 userID에는 사실 값이 포함되어 있다고 말할 수 있습니다.

+0

또 다른 잠재적 인 정보 : 아파치와 포스트그레스를 다시 시작했습니다. – jball037

+0

Postrgres에서 테이블의 스키마를 두 번 확인 했습니까? 아마도'null = True'없이 먼저 스키마를 만들고 나중에 고정했지만 스키마를 실제로 업데이트하지 않았을 수도 있습니다. –

+0

항상 null = True로 설정했습니다. – jball037

답변

1

예기치 않지만 해결책은 간단했다. 다른 사람들이 같은 문제에 부딪히는 경우에 대비하여 여기에 글을 쓰고 있습니다.

위에서 설명한 모델의 요약 된 부분 외에도 PIL (Python Imaging Library)으로 이미지를 저장하려고했습니다. 액세스 권한은, "755"

class Users(models.Model): 
    user = models.ForeignKey(User, unique=True, null=True, blank=True) 
    firstname = models.CharField(max_length=100, blank=True, default='') 
    profile_pic = models.ImageField(upload_to='profilepics', max_length=300, default='') 

이 "upload_to"폴더, "profilepics"을했다,하지만 난 "$ chmod를을 실행하여 변경하는 경우 : - 모델의 관련 부분에 위 것을 추가 R 777 profilepics "를 터미널에서 모두 작동했습니다! 이상한 것은 오류 메시지가 null 인 "user_id"필드에서 그것을 비난하고 있다는 것입니다. 완전히 다른 무언가를위한 폴더 허가였습니다. 언젠가 누군가를 돕는 희망.