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

2024-09-28 05:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想筛选依赖于另一个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 %}

我目前正试图从埃斯科拉那里获取Inscrio数据。 但当我试图从Inscrio获取Utlizador数据时,我什么也得不到

我该怎么做

提前谢谢


Tags: idtruedbmodelscolumnnulllengthmax
2条回答

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

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

如果这不是你想要的,我会更新我的答案

我想这是最糟糕的方式。您正试图使用所有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 %}

相关问题 更多 >

    热门问题