2010-11-25 175 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 %}