2014-05-14 4 views
0

Django 1.6 프로젝트에서 다음과 같이 외래 키 종속성이있는 모델 구조를 사용하고 있습니다. 내 ParentModel 메서드 mixin에서 부모 외래 키가있는 새 ChildModel 인스턴스를 메서드 컨텍스트의 "self"로 만드는 메서드를 추가해야합니다.Django 모델 mixin 가져 오기 종속 모델

ParentModel 메서드 내에서 ChildModel을 가져 와서 성공적으로 구현했지만,이를 달성하는 더 깨끗한 방법이 있는지 궁금합니다. mixins.py의 최상위 레벨에서 하위 모델을 직접 가져 오려고하면 가져 오기 오류가 발생합니다. 이는 가져 오기 오류 때문입니다.

여기서 ParentModel 메서드 내에서 가져 오기 양식을 피하는 방법이 있습니까?

그렇다면 호기심에서 벗어나 방법 내에서 즉석에서 ChildImport를 갖는 오버 헤드는 무엇입니까? 파이썬은 매번 메소드를 임포트합니까, 아니면 어떻게 든 코드를 캐쉬합니까? 상위 필드에 대한 related_name을 정의하지 않는 클래스를 보장 할 수 있습니다 가정

models.py

from .mixins import ParentMixins 

class ParentModel(models.Model, ParentMixins): 
    name = models.TextField() 

class ChildModel(models.Model): 
    parent = models.ForeignKey(ParentModel) 

mixins.py

class ParentMixins(object): 
    def create_child(self): 
     from .models import ChildModel 
     ChildModel.create(parent=self) 

답변

1

, 당신은이 작업을 수행 할 단지 수 create_child 방법 :

self.childmodel_set.create() 

그러면 가져 오기를 전혀 수행 할 필요가 없습니다.

+0

훨씬 낫다 그 (내가 실제로 그 자체를 제공하지 않는 것 콘크리트 모델의 필드에 믹스 인 의존 데의 아이디어에 대한 혼란 조금 해요. 인정해야하지만)! 감사. 너의 코멘트로 너의 의미가 뭔지 모르지만 ... – yellowcap