Python Django如何从模板中的另一个查询集获取查询集

Python Django如何从模板中的另一个查询集获取查询集,python,html,django,django-queryset,Python,Html,Django,Django Queryset,我想筛选依赖于另一个queryset的queryset,该queryset已经依赖于另一个queryset 我的模特 class Escola(models.Model): id = models.AutoField(db_column='ID', primary_key=True) nome = models.CharField(db_column='Nome', max_length=255, blank=True, null=True) class Inscrio(mod

我想筛选依赖于另一个queryset的queryset,该queryset已经依赖于另一个queryset

我的模特

class Escola(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)
    nome = models.CharField(db_column='Nome', max_length=255, blank=True, null=True)

class Inscrio(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)
    escolaid = models.ForeignKey(Escola, models.DO_NOTHING, db_column='EscolaID', blank=True, null=True)

class Utilizador(AbstractBaseUser)
    id = models.AutoField(db_column='ID', primary_key=True)
    inscriçãoid = models.ForeignKey(Inscrio, models.DO_NOTHING, db_column='InscriçãoID', blank=True, null=True)
    email = models.CharField(db_column='Email', max_length=255, blank=True, null=True, unique=True) 
    nome = models.CharField(db_column='Nome', max_length=255, blank=True, null=True)
    password = models.CharField(db_column='Password', max_length=500, default='pass');

USERNAME_FIELD = 'email'
EMAIL_FIELD = 'email'
我的观点

def view_forms(request):
   return render(request, 
                 "main/view_forms.html", 
                 {"escolas": Escola.objects.all(),
                 })
我在做什么

{% for escola in escolas %}
   {% for inscrio in escola.inscrio_set.all %}
        {% for utilizador in inscrio.utilizador_set.all %}
            <tr>
            <td><center>{{inscrio.id}}</center></td>
            <td><center>{{escola.nome}}</center></td>
            <td><center>{{utilizador.id}}</center></td> 
        {% endfor %}
    {% endfor %}
{% endfor %}
{%for escolas%中的escola}
{escola.inscrio_set.all%}
{inscrio.utilizador_set.all%中utilizador的百分比}
{{inscrio.id}
{{escola.nome}}
{{utilizador.id}
{%endfor%}
{%endfor%}
{%endfor%}
我目前正试图从埃斯科拉那里获取Inscrio数据。 但当我试图从Inscrio获取Utlizador数据时,我什么也得不到

我该怎么做


提前谢谢

我想这是最糟糕的方式。您正试图使用所有Escola中utilizador的信息呈现一个表,所以请获取所有信息并呈现它!。你可以用escola的身份证订购

query = Utilizador.objects.all().order_by('inscriçãoid__escolaid__id')

template
{% for q in query %}
    <tr>
    <td><center>{{q.inscriçãoid.id}}</center></td>
    <td><center>{{q.inscriçãoid.escola.nome}}</center></td>
    <td><center>{{q.id}}</center></td> 
{% endfor %}
query=Utilizador.objects.all()
模板
{查询%中q的%s}
{{q.inscriçãoid.id}}
{{q.inscriçoid.escola.nome}
{{q.id}}
{%endfor%}

如果我明白你想要什么,我想你是在倒退。试试这个:

views.py:

def view_forms(request):
   return render(request, 
                 "main/view_forms.html", 
                 {"utilizadores": Utilizador.objects.all().order_by('inscriçãoid__escolaid__id'),
                 })
在模板中:

{% for utilizador in utilizadores %}
        <tr>
        <td><center>{{utilizador.inscriçãoid.id}}</center></td>
        <td><center>{{utilizador.inscriçãoid.escolaid.nome}}</center></td>
        <td><center>{{utilizador.id}}</center></td> 
    {% endfor %}
{%用于Utilizadore%中的utilizador}
{{utilizador.inscriçãoid.id}
{{utilizador.inscriçãoid.escolaid.nome}
{{utilizador.id}
{%endfor%}

如果这不是您想要的,我将更新我的答案。

这只是打印最后一个({{utilizador.id})。不打印其他字段确保数据库中的数据已填充这些外键字段。如图所示,它应该打印所有数据(如果存在)。我注意到你允许它们为空。是的,我确信它们已被填充。你的模板中的内容与上面完全相同?你能在控制台中从我的代码中打印“utilizadores”对象的内容并显示它的外观吗?