2013-03-23 100 views
1
class Punch(models.Model): 
     ring   = models.ForeignKey(Ring) 
     voters   = models.ManyToManyField(settings.AUTH_USER_MODEL) 

    class Ring(models.Model): 
     category  = xxxx 

我有這個類與ManyToManyField。Django:如何檢查用戶是否已經投票ManyToManyField?

每個用戶應該只能爲每次打卡投票一次。 現在我需要知道用戶是否已經爲特定的打卡投票。

我該怎麼做?

punch.voters.filter(??? = request.user) 

閱讀中,我想出了這個文檔:

voters = get_user_model().objects.filter(punch__voters=request.user) 

,但是這給了我的時間,用戶投票支持所有拳總數。但我只對一個特定的拳擊感興趣,看看他是否投了票。

我仍在努力解決這個問題。 感謝您的幫助

+1

爲什麼'votes'而不是'voters'更換filter? – manojlds 2013-03-23 21:23:08

+0

是的。你是對的。 – Houman 2013-03-24 05:50:52

回答

0

你可以試試這個:

punch.voters.filter(pk=request.user.pk) 

你也可以用try-expect包裹get

+0

棒極了。通過一個小的修改它可以工作:'punch.voters.filter(pk = user.pk)'謝謝 – Houman 2013-03-24 06:20:39

+0

這將是一個有趣的選擇。不會拋出一個比過濾器更昂貴的期望? – Houman 2013-03-24 14:48:38

+0

@Kave http://stackoverflow.com/q/1018886/526535 – manojlds 2013-03-24 15:10:20