django模型多对多调用
2024-09-01 13:13:43
对于如下的模型:
from django.db import models # Create your models here. class Student(models.Model):
name = models.CharField(max_length=128) class Course(models.Model):
name = models.CharField(max_length=128)
students = models.ManyToManyField('Student')
模型Course有一个多对多字段指向Student模型。
正向查询
假设编写了一个如下的视图:
def test(request):
course = models.Course.objects.get(pk=1)
return render(request, 'course.html', locals())
获取了id为1的course对象,并将它传递给course.html模版,模版代码如下:
{% for student in course.students.all %} <p>{{ student.name }}</p> {% endfor %}
首先通过course.students.all
,查寻到course对象关联的students对象集,然后用for标签循环它,获取每个student对象,再用student模型的定义,访问其各个字段的属性。
反向查询
对于反向查询,从student往course查,假设有如下的视图:
def test2(request):
student = models.Student.objects.get(pk=1)
return render(request, 'student.html', locals())
获取了id为1的student对象,并将它传递给student.html模版,模版代码如下:
{% for course in student.course_set.all %}
{{ course.name }}
{% endfor %}
通过student.course_set.all
,反向获取到student实例对应的所有course对象,然后再for标签循环每个course,调用course的各种字段属性。
对于外键ForeignKey,其用法基本类似。只不过正向是obj.fk
,且只有1个对像,不是集合。反向则是obj.fk_set
,类似多对多。
最新文章
- DirectX12 Samples 学习笔记 – PredicationQueries
- jquery客户端验证插件
- 学习了几天的jQuery Mobile的一点感受
- Android Studio下载安装及配置图文教程
- codeforces 597B Restaurant
- 使用SQL Server Driver for PHP解决PHP连接MSSQL乱码的问题
- CloudFormation
- ZOJ 3537 Cake
- css块级标签,行内标签,行内块标签的转换(2)
- PhpStorm连接服务器,开始自动上传功能
- JavaScript数字例子,二分法,冒泡排序
- heartFunction c语言
- Python classmethod 修饰符
- Java 输入/输出——处理流(RandomAccessFile)
- PHP如何处理yyyyMMddHHmmssSSSZ?
- linux 权限管理命令chmod、文件和目录的权限的意义
- 深入浅出Docker(五):基于Fig搭建开发环境
- Intelij IDEA 配置Tomcat时找不到 “Application Server”
- /sys/kernel/debug/gpio
- VS2013下使用cjson