2012-05-08 128 views
2

所以我有一個User模型和一個Dinner模型。他們與LotteryEntry模型相關聯。 (又名人進入彩票被選中去參加一個晚宴)檢查QuerySet中是否存在對象

可以說我有這樣的查詢集合晚餐:

first_page_dinners = Dinner.objects.all().order_by('-created_at')[:5] 

和「彩票」爲當前的查詢集登錄的用戶現在

entries = LotteryEntry.objects.filter(user=request.user) 

在我通過晚宴的對象循環的模板,但還需要檢查,如果該人已經進入該吃飯彩票...所以像這樣:

{% for d in dinners %} 
    {% if entries.contains(d) %} 
    //custom html here if user has already entered lottery 
    {% endif %} 
{% endfor %} 

但是'.contains'不是真正的東西。 django/python提供了一個很好的小方法嗎?

+1

你應該告訴我們你的模型 –

回答

2

嘗試使用values_list,所以如果一個物體存在,它會更容易檢查:

dinner_entries = LotteryEntry.objects.filter(user=request.user).values_list('dinner__id', flat=True) 

在你的模板,你可以檢查這樣的:

{% if d.id in dinner_entries %} 
0

這是一個有點難以回答你的問題不知道你的數據模型,多一點細節,但我嘗試這樣做不過:

慢,但應該工作:嘗試迭代爲您的彩票參與項每次晚餐,然後在您的LotteryEntry記錄中查找您的外鍵字段。如果引用的晚餐與外環的晚餐記錄相匹配,那麼你就在那裏。

如果你想要一個更快的解決方案,那麼你需要準備一個基於你的條目查詢集的映射晚餐記錄到相應的LotteryEntry的字典。然後,您可以使用該地圖通過調用字典的get方法來查找相應的彩票條目。如果沒有彩票條目,那麼你只會得到None