2010-11-24 5 views
8

해당 앱을 수정하지 않고 INSTALLED_APP에서 사용되는 모델을 재정의 할 수 있습니까? 예를 들어 django-basic-blog에는 필드를 추가하려는 Post 모델이 있습니다. 나는 장고 - 베이직 - 블로그를 직접 편집 할 수 있었지만 코드 이식성을 위해서 그 위에 빌드하고 싶다. 포스트 모델에 대한 기존의 모든 참조를 유지하고자하므로 하위 클래스로 만들고 싶지 않습니다. 미리 감사드립니다!Django에 설치된 앱에 정의 된 모델을 재정의하는 방법은 무엇입니까?

답변

11
  1. 원래 필드를 하위 클래스로 분류하면 원본 테이블에 계속 저장되므로 참조가 유효합니다. 당신은 원숭이 패치 할 것인지

  2. 주로 추천 더러운 방법은 아닙니다 기존의 클래스는, 당신은 당신이 수정할 한 후 응용 프로그램에로드됩니다 일부 models.py 파일에 contribute_to_class을 사용할 수

models.py :

from django.db.models import CharField 
from blog.models import Post 
CharField(max_length="100").contribute_to_class(Post, 'new_field') 

이 같은 그것을 할 경우, 당신은 항상 변경 사항이 코드의 다른 조각과 코드를 유지하기 어렵게 될 것이다 충돌 할 위험을 베어있다!

+0

위대한 답변! 나는 당신이 1을위한 예제를 제공한다면 좋을 것이다;) – Jannis

관련 문제