对于如下的模型:

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,类似多对多。

最新文章

  1. DirectX12 Samples 学习笔记 – PredicationQueries
  2. jquery客户端验证插件
  3. 学习了几天的jQuery Mobile的一点感受
  4. Android Studio下载安装及配置图文教程
  5. codeforces 597B Restaurant
  6. 使用SQL Server Driver for PHP解决PHP连接MSSQL乱码的问题
  7. CloudFormation
  8. ZOJ 3537 Cake
  9. css块级标签,行内标签,行内块标签的转换(2)
  10. PhpStorm连接服务器,开始自动上传功能
  11. JavaScript数字例子,二分法,冒泡排序
  12. heartFunction c语言
  13. Python classmethod 修饰符
  14. Java 输入/输出——处理流(RandomAccessFile)
  15. PHP如何处理yyyyMMddHHmmssSSSZ?
  16. linux 权限管理命令chmod、文件和目录的权限的意义
  17. 深入浅出Docker(五):基于Fig搭建开发环境
  18. Intelij IDEA 配置Tomcat时找不到 “Application Server”
  19. /sys/kernel/debug/gpio
  20. VS2013下使用cjson

热门文章

  1. Python_算术运算符
  2. 关于日期格式yyyy-MM-dd和YYYY-MM-dd
  3. 【BZOJ2324】[ZJOI2011]营救皮卡丘 给定起点最小权K链可相交覆盖
  4. SHELL编程基础01
  5. 《奋斗吧!菜鸟》 第七次作业:团队项目设计完善&amp;编码
  6. 并发编程大师系列之:wait/notify/notifyAll/condition
  7. 「数据结构与算法之链表(Python)」(四)
  8. 如何在C中以二进制格式打印十进制数?
  9. NOIP2018 保卫王国(动态DP)
  10. Hive的自定义函数