2010-02-25 3 views
1

다른 기존 앱의 모델을 하나의 큰 새로운 반짝이는 앱으로 그룹화하는 아이디어가 있습니다. 필자가해야 할 중요한 이유는 없지만, 모든 코드를 하나의 하위 디렉토리에 통합하는 것이 좋을 것이며 동일한 모듈 헤더 아래 admin_index에 모든 모델을 함께 그룹화하는 사이트가 개선 될 것입니다.기존 Django 모델에서 app_label 할당을 변경하는 것은 나쁜 생각입니까?

내 생각은 모든 모델에서 Meta의 db_table 설정으로 기존 테이블 이름을 하드 코딩 한 다음 각각에 동일한 app_label 설정을 지정하는 것이 었습니다.

하지만 내 관심사는 ContentType과 모든 권한 설정을 망칠 수 있다는 것입니다. 아무도 전에 이것을 시도 했습니까? 나는 약간의 인터넷 검색을 해봤지만 몇 사람이 몇 가지 사용자 지정 구성 설정으로 admin_index를 재구성하는 매끄러운 방법을 생각해 냈지만 직접 주소를 물어 보지 못했습니다.

답변

0

모델을 움직이면 기존 ContentType 항목이 쓸모 없게됩니다. 프로젝트의 특성을 알지 못하면 "좋은 아이디어"가 무엇인지 말할 수 없습니다. 코드를 분기하고, 변경하고, 내용 유형 및 권한 테이블을 반영하여 업데이트 할 수 있습니다. 또는 마이그레이션을 만들거나 실행할 때와 모델을 이동할 때의 균형을 찾는 것이 까다로울 수도 있지만 South를 사용하여 데이터 마이그레이션을 작성할 수 있습니다. 트렁크를 실행할 수있는 경우 자연 키를 확인할 수도 있습니다 : http://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys. 이렇게하면보다 일반적인 방식으로 데이터를 조명기로 내보내는 경로가 쉽게 만들어 지므로 변경 한 후에는 너무 어려움없이로드 할 수 있습니다.

Django를 잠시 사용하거나 대규모 프로젝트에서 작업 할 계획이라면 이러한 유형의 변경 사항을 처리하는 기술을 개발하는 것이 좋습니다. 진화하는 코드와 리팩토링은 사실입니다. 캐주얼 환경에서 이러한 변화를 만드는 함정에 대해 배우면 팀 설정 및 대규모 프로젝트에서 발생하는 문제를 해결할 수 있도록 미래에 대비할 수 있습니다.

+0

조언 주셔서 감사합니다. Brian. 'db_table'을 하드 코딩하고 새로운'app_label'을 추가하여 모델 중 하나를 조정 해 보았습니다. 새로운 app_label을 사용하여 새 ContentType 객체를 만들었습니다. 그러나 해당 사용 권한이 만들어지지 않은 것 같고 새 ContentType에 ct.permission_set.all()을 실행하면 빈 목록이 나타납니다. 이 사용자를 실행하여 사용 권한을 업데이트하려고 시도했지만 운이 거의 없습니다. http://www.djangosnippets.org/snippets/696/ – palewire

관련 문제