2009-09-13 6 views
1

저는 여러 모델에 일반적으로 연결할 수있는 투표 모델을 사용하고 있습니다. 다른 모델에 투표 할 수 있습니다. 내 코드 중 일부에서는 주석 집합을 사용하여 총 투표 수와 쿼릿 세트의 양수를 계산합니다. 특정 품목에 대한 투표를 실시하면 동일한 ID를 가진 다른 유형의 모델도 투표에 참여한 것으로 나타났습니다 (총 투표 수와 찬성 투표 수 모두). 투표를하지 않은 객체의 투표 목록을 보면 빈 목록이 반환됩니다 (단, 주석에는 +1이 표시됨).GenericRelation의 주석이 올바르지 않습니다.

class UserVote(): 

    user = models.ForeignKey(User) 
    vote = models.SmallIntegerField() 

    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey() 

class Model1(): 
    votes = generic.GenericRelation(UserVote) 

class Model2(): 
    votes = generic.GenericRelation(UserVote) 

그리고 오류 재현 : 이것은 주석을 코드의 버그 인 경우

m1 = Model1() 
m1.save() 
m2 = Model2() 
m2.save() 
m1.votes.add(UserVote(user_id=1, vote=1)) 
Model2.objects.all().annotate(tot_votes=Count('votes__vote'))[0].tot_votes # Returns 1 
Model2.objects.all().annotate(tot_votes=Count('votes__vote'))[0].votes.all() # Returns [] 

는 잘 모르겠어요, 또는 내가 몇 가지 추가를 누락하는 경우 여기

는 일부 코드입니다 일반적으로 서로 다른 모델에 대한 투표간에 차별화 된 나는 장고 버전 트렁크 버전을 운영하고있다.

편집 : http://code.djangoproject.com/ticket/10461에 버그가 열려있는 것 같습니다 (다음 번에 먼저 검색 할 것 같습니다). 내가 후손을 위해/누군가가 해결 방법을 알아낼 수 어쩌면 이것을 열어 두겠습니다.

답변

0

내 최종 솔루션은 Vote 개체의 투표 수를 가져온 다음 Model # 개체에 주석을 사용하는 대신 나중에 Model # 개체에 첨부하는 것이 었습니다. 이것은 설명에 언급 된 티켓이 처리 될 때까지해야합니다.

관련 문제