2010-11-25 210 views
0

您好我有一個Django物體上的許多許多2場,篩選結果

美孚< =>酒吧

所以如果我通過類似Foo.objects.filter濾波器(bar_ _contains =「X」) 我希望得到所有富與具有含X的名稱相關的酒吧對象的對象,

所以在模板我環路圓FOOS,然後一輪FOOS吧,但我得到所有的酒吧對於那個foo,不僅僅是過濾器過濾的那些!

任何幫助表示讚賞


更新,一些示例代碼,一到5月爲簡單起見,同樣的問題適用..

Models.py

class Foo(models.Model): 
    bob = models.CharField(max_length=255) 

class Bar(models.Model): 
    wibble = models.CharField(max_length=255) 
    foos = models.ForeignKey('Foo') 
上述

所以我說的東西像...

foobar = Foo.objects.filter(bob__wibble__icontains='blagh') 

我會傳遞給一個模板進行渲染,我希望所有的foos都有一個與查詢匹配的條,並且只有匹配查詢的條,但是我沒有那樣做,我得到了與查詢匹配的條的所有foos以及每一個將foo作爲Foriegn Key的酒吧。

即我有一個FOO我有條紋[{ '維布勒': 'blagh'},{ '維布勒': '斑點'},{ '維布勒':緹'}]

我有模板中的以下內容:

{% for bar in foobar.bar_set.all %} 
    {{ bar.wibble }}, 
{% endfor %} 

,而不是剛開「blagh,」我會得到「blagh,一滴,TWIP」

+0

您能否提供一些代碼? – philgiese 2010-11-25 15:39:22

+0

你想在模板中做一個過濾器? – eos87 2010-11-25 15:51:55

回答

2

您還沒有表現出任何代碼,但它看起來像你過濾美孚,而不是酒吧。因此,您可以在所有酒吧列表中獲得名爲「x」的酒吧的所有Foos,但您不會將酒吧自身限制爲包含x的酒吧。

您可能想要這樣做:在Bar上使用過濾器表達式來僅獲取名稱='x'的那些,然後遍歷相關的Foos列表。

在評論後編輯您仍然需要過濾酒吧,而不是foos。迭代時,您可以在模板中進行分組。例如:

bars = Bar.objects.filter(wibble__icontains='blagh').order_by('foo').select_related() 

{% for bar in bars %} 
    {% ifchanged bar.foo %}{{ bar.foo.bob }}{% endifchanged %} 
    {{ bar.wibble }}, 
{% endfor %}