2009-07-06 1 views
2

Django에서 필자는 모델을 가지고 있는데, "Profile"을 참조하기 위해 content_type Foreign Key를 사용하는 "MyTable"이라고 부르 자고합니다.Django : 데이터베이스에 의해 발생한 오류 : "_mytable"관계가 없습니다 (content_type의 경우). 잃어버린 app-name

대부분의 경우 (내 단위 테스트에서와 같이) 문제가 없지만 특정 상황에서 Profile 개체 (프로필 .save())를 저장하려고 시도하면 데이터베이스에서이 문제를 발생시킵니다. 예외 :이 때문에 ORM 인해 프로필을 MyTable에서 외래 키에 프로파일과의 사이를 MyTable 만드는 일부 리버스 룩업 인 것이 추정

relation "_mytable" does not exist 

.

이제 myapp_mytable이라는 데이터베이스에 관계가 있습니다. 그러나이 경우 ORM은 app-name을 잃어버린 것처럼 보입니다. SQL을 확인하면이를 확인하고, 실제로 myapp_mytable 대신 _mytable에서 선택하려고합니다.

누구나 이와 비슷한 내용이 있으시거나 제안 사항이 있으십니까?

+0

먼저 수입 주문이 이상하다고 생각합니다. settings.py 파일 전에 모델을 가져 오시겠습니까? –

+0

그게 흥미로운 생각이야 ... 내가 확인하자. – interstar

+0

예 ... 주문은 * 이상하다. 그 방향에서 수사를 계속하면 환호 – interstar

답변

3

당신이 지금까지 해결했거나이 문제를 해결했다고 상상해 봅니다.

제 경우는 당신 것보다 약간 다르지만 알아낼 때까지 몇 시간이 걸렸으므로 여기를 참조 용으로 게시하겠습니다.

필자의 경우 코드에 데이터가 데이터베이스에 미리로드 될 것으로 예상했지만 코드가 없습니다.

셸에서 실행할 때 쿼리가 제대로 작동하는 것처럼 보였지만 unittest에서 동일한 코드를 실행하면 "관계를 찾을 수 없음"오류와 함께 실패합니다.

그 이유는 쉘에서 실행할 때 내가 예상했던 데이터가 이고 이미이 내 DB에로드되어 있기 때문입니다. 그러나 테스트 케이스의 fixture를 정의하는 이었지만 테스트 케이스 ("manage.py test"비헤이비어는 테스트 전 빈 데이터베이스를 만드는 것입니다.)에서는 모델 유효성 검사/평가 전에 고정구가로드되지 않았습니다. 예상 된 조명기 데이터는 내가 기대했을 때 존재하지 않았습니다.

+0

감사합니다 ... 나는이 문제의 바닥에 도달했는지 기억이 나지 않지만 어느 시점에서 사라졌습니다. 비슷한 일이 생기면 나는 이것을주의 할 것이다. – interstar