gpt4 book ai didi

Python Django 模型执行连接查询

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:18 25 4
gpt4 key购买 nike

我正在使用 Django 框架开发一个应用程序,我是新手

我需要创建一个简单地连接 2 个表(类型和子类型)的查询,然后在模型文件的 View 中使用结果,如下所示:

 class Type(models.Model):
name = models.CharField(max_length=60)
description = models.CharField(max_length=200)

class SubType(models.Model):
name = models.CharField(max_length=60)
description = models.CharField(max_length = 200)
Type = models.ForeignKey(Type)

在 home.html 文件中我有:(我删除了 Bootstrap 代码以使其更具可读性)

   <ul>
<li ><a href="/home" >Home Page</a></li>
{% for type in all_types %}
<li >
<a href="#">{{ type.name }} </a>
<ul >
--The Inner Loop--
</ul>
</li>
{% endfor %}
</ul>

我需要创建一个类型列表,然后在每个类型中我需要创建另一个列表,其中包含每个类型的子类型

我不知道如何在 views.py 中创建查询

 def index(request):
list_all_types = #Here I have to create a join query via django models
t = loader.get_template('home.html');
c = Context({
'all_types' : list_all_types,
});
return HttpResponse(t.render(c));

因此,请告诉我如何进行查询并将正确的代码替换为 views.py 中的注释部分,以及我必须添加哪些更改才能对 home.html 进行更改以使其启用 show all home.html 中的子类型而不是 --inner 循环

提前致谢

最佳答案

除了获取类型外,您无需在 View 中执行任何操作:

types = Type.objects.all()

在模板中,您只需遍历 type.subtype_set.all:

        <ul>
{% for subtype in type.subtype_set.all %}
<li>{{ subtype.name }}</li>
{% endfor %}
</ul>

请注意,本教程对此进行了很好的介绍。 (就像使用 render 快捷方式而不是单独加载和渲染模板一样。)

(其实我一开始说的不太对:为了效率,可以在Type查询中加入prefetch_related()。)

关于Python Django 模型执行连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22506010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com