2010-05-12 6 views
7

django에서 사이트 모델을 확장하는 최선의 방법은 무엇입니까? 새 모델과 ForeignKey를 사이트 만들기 또는 사이트 모델을 하위 클래스화할 수있는 다른 접근법이 있습니까?django에서 사이트 모델을 어떻게 확장합니까?

관계형으로는 더 편안하기 때문에 서브 클래 싱을 선호하지만 기본 제공 Admin에 미치는 영향에 대해 우려하고 있습니다.

답변

8

방금 ​​사이트의 내 하위 클래스를 사용하고 맞춤 관리자를 만들었습니다.

기본적으로 django에서 모델을 하위 클래스로 만들면 부모 모델을 가리키는 FK를 만들고 pyhon에서 부모 클래스 속성에 액세스하는 것과 같은 방식으로 부모 모델의 필드에 투명하게 액세스 할 수 있습니다. 내장 된 관리자는 어떤 방식 으로든 문제가되지 않지만 사이트 ModelAdmin의 등록을 취소하고 자신의 ModelAdmin을 등록해야합니다.

+2

이러한 것들은 어떻습니까? 여전히 효과가 있습니까? http://docs.djangoproject.com/ko/dev/ref/contrib/sites/#how-django-uses-the-sites-framework –

4

개체의 동작 만 변경하고 새 필드를 추가하지 않으려면 "프록시 모델"(Django 1.1의 새로운 기능) 사용을 고려해야합니다. 기존 모델에 추가 Python 메소드를 추가 할 수 있습니다.

다음은 프록시 모델 상속을위한 것입니다. 원래 모델에 대한 프록시 작성입니다. 프록시 모델의 인스턴스를 생성, 삭제 및 업데이트 할 수 있으며 원래 (비 프록시) 모델을 사용하는 것처럼 모든 데이터가 저장됩니다. 차이점은 원본을 변경하지 않고 프록시의 기본 모델 순서 또는 기본 관리자와 같은 것을 변경할 수 있다는 것입니다.

자세한 내용은 the documentation을 참조하십시오.

+0

새로운 필드를 추가하려고합니다. 그러나 정보를위한 감사합니다. 상관없이 매우 유용합니다. –

1

Site과 OneToOne 관계가있는 SiteProfile과 같은 다른 모델을 사용할 수 있습니다.

관련 문제