2012-06-11 2 views
0

나는 C3po라는 앱을 가지고 있습니다. 나는 모델 "Article"에 대해 연구 중이다. 이 모델에서는 Lea라는 다른 앱의 모델에 대한 custom_name이라는 이름으로 ForeignKey 필드를 만들고 싶습니다. related_name이 고유한지 확인하려면 "c3po_articles"라고 이름을 짓고 싶습니다. 하지만 난 애플 리케이션 이름 c3po 하드 코드 싶지 않아요. 동적으로 폴더/앱 이름을 가져 오는 방법은 무엇입니까? __file__을 사용하고 분할합니까? 아니면 좀 더 우아한 방법이 있습니까? Django에서 models.py의 현재 응용 프로그램 이름을 가져 오는 방법은 무엇입니까?

는 당신의 도움을 주셔서 감사합니다 :)

+0

model.app_name을 사용할 수 있지만 관계 이름이 코드에서 사용되어야하므로이 동적 방법이 왜 충분히 유연한 지 알 수 없습니다. – Tisho

+0

미안하지만, 그렇지 않습니다. 완전히 이해하십시오. 나는 이렇게하지 않아야합니까? 전체 코드를 편집하지 않고 나중에 모델의 이름을 바꿀 수 있기를 원합니다. – JasonTS

+0

related_name은 관계에서 값을로드하는 데 사용됩니다. related_name = "articles"인 경우 myobj.articles.all()을 사용하여 myobj에 사용할 수있는 모든 기사를로드합니다. 해당 관계를 사용하는 코드를 편집하지 않고 related_name의 이름을 바꾸는 방법이 보이지 않습니까? 내가 놓친 게 있니? – Tisho

답변

0

related_name 속성은 두 변수와 자동 문자열 보간 지원 app_labelclass을. 예를 들어 : 장고 당신이 방금 '%(app_label)s_foo' 즉 둘 중 하나를 포함 할 것이다, 그러나 당신이 시도 할 수있는 경우 지금

models.ForeignKey(FooModel, related_name='%(app_label)s_%(class)s_foo') 

, 솔직히 모르겠어요. (워드 프로세서에 대해 자세히 살펴 후, 내가보기 엔 그것을 의심은 스스로를 테스트하고 참조 여전히 모두 없습니다 또는 둘 다,하지만 것 같다..)

참조 : https://docs.djangoproject.com/en/dev/topics/db/models/#be-careful-with-related-name

편집

사실, 더 많은 것을 생각한 후에는 '%(app_label)s_%(class)ss'을 사용하면 c3po_articlesrelated_name으로 가져갈 수 있습니다.

관련 문제