2012-10-03 5 views
0

limit_choices_to을 사용하여 일반 관계에 대한 ContentType 선택을 제한하지만 더 이상 존재하지 않는 모델을 보여줍니다. 이 코드 예를 들어삭제 된 모델은 여전히 ​​Django에서 ContentType 선택 항목으로 표시됩니까?

employer_content_type = models.ForeignKey(ContentType, 
    limit_choices_to={"model__in": ('venue', 'festival')}, related_name="employer") 

나는 중복, 즉 축제, 축제, 장소를 가지고 선택 목록, 장소

를 얻을 그러나 나는보다는 응용 프로그램에 의해 선택이 같은 단지 모델을 제한하는 경우 :

employer_content_type = models.ForeignKey(ContentType, 
      limit_choices_to={'app_label': 'contacts'}, related_name="employer") 

나는 내가 북동를 만들어 내 개발 한 시점에서 중복되지 않는, 즉 주소, 이메일, 축제, 장소

와 모든 모델의 목록을 w app ("주소록")은 이전 앱과 중복되었습니다. 모든 모델의 이름이 같았습니다. 처음에는 이것이 중복을 일으키고 있다고 생각했지만 settings.py에서 이전 응용 프로그램을 제거하고 이전 모델을 데이터베이스에서 삭제 한 후에 문제가 사라지지 않았습니다.

캐시 문제라고 생각하지만 캐싱을 설정하지 않았습니다!

그래서 캐시를 지우거나 모델 및 앱별로 선택 사항을 동시에 제한하려면 어떻게해야합니까?

도움 주셔서 감사합니다.

참고 : 불행히도 나는 그 그림을 조금 더 열심히 묘사 할 수 없었다.

+0

'django_contenttype' 테이블에 아직 존재하지 않는 모델이있는 것 같습니다. 'manage.py syncdb --all'을 시도하십시오. 어쩌면 낡은 모델을 제거 할 수있는 기능을 제공 할 것입니다. 그러나 나는 확실하지 않다. –

답변

0

contentypes_contentype db table을 찾아서 거기에서 쓸모없는 모델을 삭제하십시오. syncdb는 또한 내용 유형 테이블에서 쓸모없는 모델을 삭제하라는 메시지를 표시해야합니다.