저는 여러 모델에 일반적으로 연결할 수있는 투표 모델을 사용하고 있습니다. 다른 모델에 투표 할 수 있습니다. 내 코드 중 일부에서는 주석 집합을 사용하여 총 투표 수와 쿼릿 세트의 양수를 계산합니다. 특정 품목에 대한 투표를 실시하면 동일한 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에 버그가 열려있는 것 같습니다 (다음 번에 먼저 검색 할 것 같습니다). 내가 후손을 위해/누군가가 해결 방법을 알아낼 수 어쩌면 이것을 열어 두겠습니다.