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 %}
如果这不是您要找的,我会更新我的答案。
我想过滤一个依赖于另一个查询集的查询集,这个查询集已经依赖于另一个查询集
我的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 %}
如果这不是您要找的,我会更新我的答案。