Django 模板 - 显示来自两个模型的数据

Django template - showing data from two models

我想要一个可以查看汽车状态的简单网站。 假设我有两个 table: 汽车 :

|id|car |mileage| insurance|
----------------------------
| 1|ford| 123456|23-06-2015|
| 2|fiat| 654321|23-06-2015|

还有第二个,错误:

|id|car_id|description|
----------------------------
| 1|     1|stop ligths doesn't work
| 2|     1|power steer needs refill
| 3|     2|etc
| 4|     2|etc

我想在我的网站上显示的内容 table 是这样的:

|            |        mileage|       insurance|
|            |---------------------------------
|            |{{car.mileage}}|{{car.insurance}}
| {{car.car}}|---------------------------------
|            |            Faults
|            |---------------------------------
|            | << list of faults for current {{car.id}}>>
-------------------------------------------------------
<<next car>>

我知道如何变得简单 table,但对我来说问题是针对每辆当前汽车的故障的第二个 forloop (?)。我应该如何在模板中的视图和 forloops 中设置查询集? 我的实际代码与示例略有不同:

models
class Pojazdy(models.Model):
 id = models.AutoField(primary_key=True)
 pojazd=models.CharField(max_length=15) #car
 rejestracja=models.CharField(max_length=15)
 aktywny=models.BooleanField(default=True)
 def __unicode__(self):
     return self.pojazd

class Pojazdy_usterki(models.Model): #faults
 id = models.AutoField(primary_key=True)
 pojazd=models.ForeignKey(Pojazdy)
 usterka=models.CharField(max_length=255) #faults
 przebieg=models.IntegerField()
 data=models.DateField(auto_now_add=True)
 zrobiona=models.BooleanField(default=False)


view 

I have some comparisons    

def index(request):
 pojazdy_qs=Pojazdy.objects.all().filter(aktywny__exact= True)
 for pojazd in pojazdy_qs:
    (...)
    # some operations
    (...)


 return render(request, 'auta_hist/index.html', {
     'pojazdy': pojazdy_qs,
 })

还有来自模板的 table:

        <table  width=100%>
        {% for pojazd in pojazdy %}
        <tr>
            (... some table))
        </tr>
                 <td>
                            <table border=1 width=100%>
                                <tr>
                                    <th>Usterki  !!! FAULTS !!!</th>
                                </tr>

                                {% for ??? %}
                                <tr>
                                    <td>{{ ?? }} </td>
                                </tr>
                                {% endfor %}
                            </table>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
        {% empty %}
        <tr><td>Brak danych</td></tr>
        {% endfor%}

    </table>

有了以上部分的答案,出现了新问题: 我的故障模型有布尔字段,代表故障是否已修复。我只想显示过滤后的项目,更重要的是,我希望将此列表作为最后添加的三个项目的快速预览。 一般来说,我希望过滤项目,而不是只显示其中的一小部分。有办法做到这一点吗?现在我用 {% if .. %} 过滤项目,但不知道如何限制它们而不是列出所有项目。

使用套装! 您想要像这样获取所有 Pojazdy_usterki 个选定的 Pojazdy:

<table  width=100%>
    {% for pojazd in pojazdy %}
    <tr>
        (... some table))
    </tr>
             <td>
                        <table border=1 width=100%>
                            <tr>
                                <th>Usterki  !!! FAULTS !!!</th>
                            </tr>

                            {% for e in pojazdy_usterki_set.all %}
                            <tr>
                                <td>{{ e.usterka }} </td>
                            </tr>
                            {% endfor %}
                        </table>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
    {% empty %}
    <tr><td>Brak danych</td></tr>
    {% endfor%}

</table>