Ich habe diese Modelle ein:Django Template zweispaltige Tabelle
class Bar:
name = models.CharField()
foos = models.ManyToManyField(
through='FooBar'
through_fields=('bar','foo')
)
class Foo:
name = models.CharField()
class FooBar:
foo = models.ForeignKey(Foo)
bar = models.ForeignKey(Bar)
value = models.DecimalField()
Ich versuche, eine zweispaltige Tabelle für jede Bar, den Wert seiner Foos und n/a zu zeigen, zu machen, wenn die Bar hat keinen Wert für dieses Foo.
Dies ist, was ich will es aussehen:
[Foo1] [Foo2] [Foo3]
[Bar1] 4 n/a n/a
[Bar2] 3 n/a 9
[Bar3] n/a 1 n/a
Und das ist der Code, den ich habe:
<tr>
{%for foo in foo_list%}
<th>{{foo.name}}</th>
{%endfor%}
</tr>
{%for bar in bar_list%}
<th>{{bar.name}}</th>
{%for foo in foo_list%}
{%for foobar in bar.foobar_set.all%}
{%if foobar.foo == foo%}
<td>{{foobar.value}}</td>
{%endif%}
{%endfor%}
{%endfor%}
</tr>
{%endfor%}
Ich kann nicht herausfinden, wie wenn die foobar entsprechen überprüfen das Foo.
Ich könnte es mit einem for i in range(0,foo_list.count())
und Chaos mit dem i
, aber ich kann dies nicht in Django Template Langage tun.
ist es besser, Ihre Daten in Ihrer Ansicht zu erstellen. Erstellen Sie eine Kopfzeile mit all Ihren Foo- und einer Zeilenliste mit all Ihren Daten über die Bar/Foo-Beziehung. Logik ist besser in Ansicht oder Modell. Nicht in der Vorlage. – Wilfried
Es ist im Grunde, was ich getan habe. Nur ich habe es in ein Tag eingefügt, statt zu sehen – pocpoc47