嗨我在django对象上有很多2个字段,
Foo< =>杆
所以如果我按照Foo.objects.filter(bar_ name _contains ='x')过滤 我希望得到所有Foo对象与相关Bar对象的名称包含x,
所以在模板中我循环圆形Foos,然后圆形foos条,但我得到那个foo的所有条,而不仅仅是过滤器过滤的那些!
任何帮助表示赞赏
更新了一些示例代码,为了简单起见,可以使用同一个问题。
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的bar作为其Foriegn Key。
即。我有一个foo我有酒吧[{'wibble':'blagh'},{'wibble':'blob'},{'wibble':twip'}]
我的模板中有以下内容:
{% for bar in foobar.bar_set.all %}
{{ bar.wibble }},
{% endfor %}
而不仅仅是'blagh',我会得到'blagh,blob,twip'
答案 0 :(得分:2)
您没有显示任何代码,但看起来您正在过滤Foo,而不是Bar。因此,您可以获得所有在其条形列表中都有一个名为“x”的条形图的Foos,但是您没有做任何事情来将条形本身限制为包含x的条形图。
您可能希望以相反的方式执行此操作:在Bar上使用过滤器表达式仅获取name ='x'的那些,然后遍历相关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 %}