2010-07-18 1 views
0

장고 모델을 사용하여 장고 모델을 만들고 몇 가지 추가 방법을 제공하는 장고 모델 데코레이터를 만들고 있습니다.데이터베이스 이름을 변경하지 않고 Django 모델 하위 클래스

장고는 '%s_%s' % (app_name, class_name)을 사용하여이 모델의 데이터베이스 이름을 만듭니다. 모델을 장식 할 때 테이블 이름은 갑자기 원래 클래스가 아닌 데코레이터의 앱 이름과 클래스 이름에서 파생됩니다 (이는 사실상 올바르다).

그러나 Model의 원래 테이블 이름을 유지하고 싶습니다. Django가 데이터베이스 이름을 결정할 수퍼 클래스를 사용하거나 테이블 이름을 검색하여 모델에 적용하는 방법이 있나요? Meta 클래스입니다.

답변

1

당신은 슈퍼 클래스의 사양을 사용하여 새 모델을 만들려면 class Meta:

http://docs.djangoproject.com/en/1.1/ref/models/options/#django.db.models.Options.db_table

에서이 메소드를 오버라이드 (override) 할 수 proxy = True

http://docs.djangoproject.com/en/1.1/topics/db/models/#id8

+0

그래 조사,하지만 그것을 무시합니다. 수퍼 클래스의 이름과 앱 이름을 얻을 수는 있지만 이미 오버라이드되지 않았다고 가정합니다. 수퍼 클래스의 테이블 이름을 얻고'db_table'을 설정하면된다. –

+0

업데이트 됨. 프록시 객체를 체크 아웃하면, 충분하다는 것을 알 수 있습니다 :-) – eruciform

+0

감사합니다 eruciform, 방금 그 점을 발견했습니다. 'proxy = True'는 트릭이 환호합니까? –

관련 문제