2010-07-08 2 views
0

부모 모델에서 created_by, modified_by라는 두 개의 모델 필드를 정의하려는 경우 하위 모델의 공통 필드로 사용됩니다.Django : 부모 모델에 두 개의 외래 키가있을 때 모델을 정의하는 방법은 동일한 모델에서 온 것입니까?

class ExtendedModel(models.Model): 
     created_by = models.ForeignKey(User,related_name='r_created_by') 
     modified_by = models.ForeignKey(User,related_name='r_modified_by') 
     class Meta: 
       abstract = True 

class ChildModel1(ExtendedModel): 
     pass 

class ChildModel2(ExtendedModel): 
     pass 

이 ChildModel1 같은 오류를 제공하고 ChildModel2은 related_name는 CREATED_BY이 (가) 작성한와 modified_by 필드에서 서로 충돌하고있다.

답변

3

장고 문서는이 문제를 해결하는 방법에 대해 설명합니다 http://docs.djangoproject.com/en/dev/topics/db/models/#abstract-related-name

class ExtendedModel(models.Model): 
     created_by = models.ForeignKey(User,related_name='"%(app_label)s_%(class)s_created_by') 
     modified_by = models.ForeignKey(User,related_name='"%(app_label)s_%(class)s_modified_by') 
     class Meta: 
       abstract = True 

class ChildModel1(ExtendedModel): 
     pass 

class ChildModel2(ExtendedModel): 
     pass 
+0

나는 당신의 버전 확인하기 위해이 사용중인 장고의 버전에 따라 약간 다르게 작동 추가, 그래서 문서를 확인해야합니다 . 예를 들어, 1.1에서는 % (클래스)가 수행하지만 % (app_label) 대체가 작동하지 않는다고 생각합니다. – mazelife

+0

완벽하게 작동합니다. 이전에이 부분을 놓쳤습니다. 답변 해주셔서 감사합니다. – alvinSJ

관련 문제