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

Django How to get a queryset from another queryset in a template

我想过滤一个依赖于另一个查询集的查询集,这个查询集已经依赖于另一个查询集

我的models.py

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'

我的views.py

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 %}

我目前正在尝试从 Escola 获取 Inscrio 数据。 但是,当我尝试从 Inscrio 获取 Utlizador 数据时,我一无所获。

我该怎么做?

提前致谢

我想这是最糟糕的方法。您正在尝试使用来自所有 escolas 的 utilizador 信息渲染一个 table,所以全部获取并渲染它!你可以通过escola id订购。

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 %}

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

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 %}

如果这不是您要找的,我会更新我的答案。