2014-09-18 5 views
0

'에피소드'와 '리뷰'를 저장하는 장고 데이터베이스가 있습니다. 각 에피소드에는 제목, 날짜 및 일련의 리뷰가 있습니다. 각 리뷰에는 제목, 점수가 있으며 에피소드에 속해야합니다. 또한 리뷰가 속한 에피소드에서 DateField를 상속 받기를 원합니다.다른 모델 (장고)에서 DateField 상속

각 리뷰의 날짜는 ForeignKey을 (를) 통해 속한 에피소드와 상호 참조하여 찾을 수 있으므로 '필요 없음'을 알고 있습니다. 이 일을 어떻게 할 수 있겠습니까?

내 예를 models.py 코드 :

class Episode(models.Model): 
    title = models.CharField(max_length=100) 
    date = models.DateField() 

class Review(models.Model): 
    title = models.CharField(max_length=100) 
    score = models.FloatField() 
    episode = models.ForeignKey(Episode) 

그래서 나는 그들이 모두 작성되는 경우에 그 Episode에서 날짜를 상속 date라는 Review의 속성을 포함하고 싶습니다.

답변

0

에피소드를 가리키는 검토 중 ForeignKey가 있습니까? 그렇지 않은 경우 추가해야합니다.

그런 다음 검토가 끝나면 에피소드에서 날짜를 가져 오기 위해 해당 관계를 간단하게 탐색 할 수 있습니다. 검토시 날짜 입력란을 추가 할 필요가 없습니다.

+0

내 원래 게시물에서 누락 된 'ForeignKey'를 추가했습니다. 저는 당신이 제안한 방식대로 할 수 있다고 말했습니다. 그러나 제 질문은 관계를 횡단하는 것이 아니라 상속하는 방법이 있는지 여부였습니다. – freethebees

0

은 당신이 할 수있는 것은 class Meta: abstract = True

class DateModel(models.Model): 
    date = models.DateField() 
    # you could in fact include the title field here as well 
    # since they have that in common too. 

    class Meta: 
     abstract = True 


class Episode(DateModel): 
    title = models.CharField(max_length=100) 


class Review(DateModel): 
    title = models.CharField(max_length=100) 
    score = models.FloatField() 
    episode = models.ForeignKey(Episode) 

에피소드를 사용하는 것입니다 및 검토 DateModel에서 날짜 필드를 상속합니다,이 두 모델 자체에 날짜 필드를 추가하는 것보다 깔끔한 레이아웃입니다. 이 두 필드를 동기화 상태로 유지하고 싶다고 가정합니다. 따라서 Episode을 업데이트 할 때마다 Review을 업데이트해야하며 그 반대의 경우도 마찬가지입니다. 따라서 더 나은 옵션은 처음부터했던 것처럼 정규화 된 모델을 유지하는 것입니다.

에피소드를 만들 때이 속성을 추가하겠다고 말씀하셨습니다. Signals로 해결할 수 있습니다.