-1
我有一個類似reddit的應用程序。有「職位」,人們在上面或下面投票。在我的模板中,我列出了所有帖子,並且希望能夠指出該人是否已經對帖子投了票。Django查詢集和外鍵
這有點令人困惑,因爲我將我的查詢集充滿帖子傳遞給模板,但當我迭代每個帖子來顯示它時,我也想知道是否有現有的投票。
下面是一些代碼:
class Submission(models.Model):
submitter = models.ForeignKey(User)
title = models.CharField("Title", max_length=200)
class Vote(models.Model):
voter = models.ForeignKey(User)
submission = models.ForeignKey(Submission)
vote_value = models.FloatField()
class SubmissionListView(ListView):
model = Submission
queryset = Submission.objects.extra(select={'total': 'IFNULL((SELECT SUM(vote_value) ' + \
'FROM submissions_vote ' + 'WHERE submissions_vote.submission_id = ' + 'submissions_submission.id), ' + \
'0)'}).order_by('-total')
paginate_by = 5
好了,所以你可以看到我在做一個查詢集額外的(),因爲我想總結一下所有的選票每個崗位,並顯示在頁面上總。我認爲這是做到這一點的最有效的方法。
但是,如果查看該頁面的用戶對特定提交進行了投票,我需要以某種方式將該信息傳遞給模板。我知道我可以通過模板中的每個投票對象循環,並找出那裏,但似乎真的很低效。我一直在閱讀關於鏈接查詢集..是我需要在這裏做什麼?
嗯...我喜歡你的想法,但我可以在這一點上似乎無法訪問self.request.user.pk。可能是因爲自我在這一點上不可用? – asolberg
啊我不好。我沒有意識到你定義了queryset的位置。我編輯了我的答案來解決這個問題。 – jproffitt
是的,似乎工作。除非我真的需要返回「vote_value」字段,以便我可以判斷投票是否已啓動或停止。我試圖說,然後選擇voter_id,vote_value .....然後vote_value其他0,但沒有工作。 – asolberg