2013-06-24 2 views
2

내가 정의한 User 클래스를 사용하여 잘 작동하는 응용 프로그램이 있습니다. 몇 주 동안이 작업을 한 후, 나는 사용자 인증이 필요하다는 것을 깨달았고 django의 User 클래스를 대신 사용하기로 결정했다. (내가 장고에 대해 처음 접했을 때 어떻게 시작했는지 이해하지 못했다.)Django IntegrityError 1452

Exception Type: IntegrityError at /admin/po/purchaseorder/add/ 
Exception Value: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`po`.`po_purchaseorder`, CONSTRAINT `django_user_id_refs_id_fe5f38af` FOREIGN KEY (`django_user_id`) REFERENCES `auth_user` (`id`))') 

정말 안 : 나는 새로운 개체를 추가 관리 페이지를 사용하는 경우 그러나 지금, 내가 할, 내 사용자 지정 사용자 클래스에 내 외래 키 관계를 제거하고, django.contrib.auth.models.User에 외래 키 관계를 추가있어 이 오류를 이해하십시오.

from django.contrib.auth.models import User 

class PurchaseOrder(models.Model): 
    user=models.ForeignKey(User) 
    request_number = models.AutoField(primary_key=True) 
    #More fields 

사람이 오류에 대해 나에게 어떤 설명을 줄 수, 왜 나는 내 자신의 클래스에 반대 나는, (가) 사용자 내장 사용하고 있음을 지금 받고 있어요 다음은 해당 클래스의 코드는?

+0

'FK'유형을 변경 한 후 이전을 수행 했습니까? – karthikr

+0

아니요. 데이터베이스를 삭제하고 다시 만들었습니다. (개발 단계에 있으므로 걱정할 실제 데이터는 없었습니다.) –

+0

그런 다음 데이터베이스 스키마를 삭제하고'syncdb'를 사용하여 다시 만드십시오. 'django-south'에 대해서는 syncdb 이후에 데이터베이스 스키마 변경을 처리하는 데 널리 사용되므로 더 잘 할 수 있습니다. – karthikr

답변

3

models을 업데이트하여 Django의 사용자 정의를 포함하지만 아직 데이터베이스를 업데이트하지 않은 경우 일 수 있습니다.

IntegrityErrors은 쿼리를 수행 할 때 데이터베이스에서 일부 제약 조건이 위반된다는 것을 의미합니다. 데이터베이스 스키마 업데이트 a.k.a python manage.py syncdb이 트릭을 수행 할 것입니다.

스키마를 삭제하고 다시 만들면 해결 될 수 있습니다. 그렇지 않은 경우 모델이 나타내는 수정 된 테이블을 업데이트합니다.

희망이 도움이됩니다.

+0

예 ... 그 트릭을 수행했습니다. 변경 사항을 테스트하기 전에 데이터베이스를 삭제하고 다시 만들었 기 때문에 (그리고 syncdb를 만들었 기 때문에) 이상하지만, 그게 정확히 문제였습니다. 감사! –

+0

나는 그것이 기쁘다 :) 이주를 위해'django south '를 사용하는 것을 고려하라. 처음에는 좀 어려워 지지만 일단 얻으면 매우 편리합니다 :) –

관련 문제