나는 다소 장고 초급자이며 가능한 한 많은 응용 프로그램을 분리하고 가능한 한 작은 재사용 가능한 조각으로 만들려고 노력 해왔다. 제임스 베넷 (James Bennett)의 전략 인 re-usable apps을 따르려고합니다. 이를 염두에두고, 나는이 문제를 보았다.재사용 가능한 장고 앱 만들기
의 내가 영화에 대한 정보를 저장하는 응용 프로그램이 있었다 가정 해 봅시다 :
이코드는이 같은 보일 것이다 : 나는 등급을 추가하고 싶다면 지금
class Movie(models.Model):
name = models.CharField(max_length=255)
...
을, 나는 장고 등급을 사용할 수 단순히 내 모델에 필드를 추가 :
class Movie(models.Model):
name = models.CharField(max_length=255)
rating = RatingField(range=5)
...
이 본질적으로 내 영화 응용 프로그램은 이제 장고 - 등급에 의존하는 것을 의미하고 내가 그것을 다시 사용하고 싶었,하지만 더 이상 등급을 필요한 경우, 나는 여전히 장고 등급을 설치하거나 수정하고 내 응용 프로그램을 포크해야합니다.
이제 가져 오기를 사용하여 try/except를 사용하여이 문제를 해결할 수 있었고 성공하면 필드를 정의 할 수 있었지만 지금은 내 영화 앱이 데이터베이스 테이블 정의의 등급에 명시 적으로 연결되어 있습니다.
두 모델을 분리하고 Movie 대신에 등급 모델에서 관계를 정의하는 것이 더 합리적입니다. 그런 식으로 등급을 사용할 때 종속성이 정의되지만 영화 앱을 사용할 때는 필요하지 않습니다.
이 문제를 어떻게 처리합니까? 모델을 분리하는 더 좋은 방법이 있습니까?
이 작업을 수행 할 때 중대한 성능 저하가 있는지 궁금합니다.
편집 :이 점이 문제의 예가되고 점을 설명하기 위해 다소 고안된 것임을 분명히하고 싶습니다. 나는 관련 데이터를 추가해야 할 때마다 "영화"모델을 수정하지 않고 추가 정보를 추가 할 수 있기를 원합니다. 지금까지의 답변에 감사드립니다.
나는 모든 영화를 아주 좋아합니다. – zeekay