2011-11-29 3 views
0

내가 장고 프로젝트에서 여러 모델을 가지고 있다고 가정 해 봅시다. 이제는 프로젝트의 모든 모델에 쉽게 추가 할 수있는 reddit과 같은 평가 시스템을 구현해야합니다. 모델은 다음과 같습니다 :독립 모델 관계

class Rating(models.Model): 

    vote = models.IntegerField(blank=False, null=False) 
    user = models.ForeignKey(User) 

질문은 -이 추상 모델을 프로젝트의 다른 모델과 연결하는 방법입니다.

답변

1

처음으로 (Reddits 등급 시스템에 대해 알지 못하는 면책 조항이 있음) 사용자가 마이너스 수백만에서 긍정적 인 수백만에 이르기를 바라지 않는 한 choices을 사용하지 않으시겠습니까?

손에 문제가 있음 : 속도를 낼 수있는 모델은 한 모델에 많은 평가를 허용하는 관계가 있어야합니다. 불행히도 이것은 Django의 관계 필드가 작동하지 않는다는 것을 의미합니다. 이것에 대한 가장 단순한 해결책은 실제 모델에 등급을 매기는 것입니다.

당신이 그에서 추상적 인 모델을 사용하고 상속 할 수있는 평가 필드를 복사하여 붙여 넣을 수없는 경우 : 당신은 contenttypes framework 내장에서 일반적인 관계를 필요

class RateableModel(models.Model): 
    rating  = models.Integerfield(...) 
    rating_user = models.ForeignKey(User) 

    class Meta: 
     abstract = True 

class SomeModelThatCanBeRated(RateableModel): 
    # Fields for this model