简单写一下多对多查询
model 不是多对多的字段我就没写上来的

class Tag(models.Model):
name = models.CharField(max_length=20,verbose_name='标签')
add_time = models.DateField(default=datetime.now) class Meta:
verbose_name = '标签'
verbose_name_plural = verbose_name def __str__(self):
return self.name class Post(models.Model):
tag = models.ManyToManyField(Tag,verbose_name="标签",null=True,blank=True,related_name='tags')
add_time = models.DateField(default=datetime.now) class Meta:
verbose_name = "文章"
verbose_name_plural = verbose_name def __str__(self):
return self.name

  在编写view时 我需要 查出 某一篇文章 他所拥有的tags 和然后利用这些tags进行相关推荐 该如何查询

class ArticleView(View):
def get(self, request, post_id):
post = Post.objects.get(id=post_id)
#获取该post所有tags
all_tags = post.tag.all()
#获取该tags所有的id
all_tags_id = [tag.id for tag in all_tags]
#查询所有文章中有这些tags的文章
tag_post = Post.objects.filter(tag__id__in=all_tags_id)[:5]
return render(request, 'article.html', {
'post': post,
'all_tags':all_tags,
'tag_post':tag_post
})

  

最主要的 就是 先获取到 该文章拥有的tags
然后利用列表解析式 来 获取所有的tags的id
然后 在到 Post这个model中去查询
这里查询用到的 tag__id__in 就是 查询 tag外键的id 的一个列表
在这个列表内的都可以

如何要查询某个tag的id,中所有的文章思路应该也是一样的

post = Post.objects.filter(tag__id=tag.id)

 

django-blog:多对多查询的更多相关文章

  1. Django:表多对多查询、聚合分组、FQ查询、事务

    1表多对多的关系查询 准备工作创建表结构 from django.db import models # Create your models here. class Publisher(models. ...

  2. 数据库开发-Django ORM的多对多查询

    数据库开发-Django ORM的多对多查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.联合主键问题 CREATE TABLE `employees` ( `emp_no` ...

  3. Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询

    创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...

  4. django之跨表查询及添加记录

    一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出 ...

  5. Django框架----跨表查询及添加记录

    一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出 ...

  6. Django(多表查询操作)

    首先了解一下 mysql中的表之间的关系,一对一,一对多,多对一,多对多. 一对多关系.多对一关系.一对一关系 至少都有一侧是单个实体,所以记录之间的联系通过外键实现,让外键指向这个实体. 实现这种关 ...

  7. Django的ORM常用查询操作总结(Django编程-3)

    Django的ORM常用查询操作总结(Django编程-3) 示例:一个Student model: class Student(models.Model): name=models.CharFiel ...

  8. Django 之多表查询 与多表的使用

    1.django的多表查询 主要区分为: 正向查询    逆向查询 1. 多表查询: 是一个复杂的查询,他分为对象查询和__模糊查询两种方式 2. 多表查询: 又分为 一对一查询, 一对多查询, 多对 ...

  9. 基于对象的跨表查询,多对多查询,多对多操作,聚合查询和分组查询,F查询和Q 查询

    基于对象的跨表查询 一对多查询(班级表和学生表) 表结构创建 class Class(models.Model): id = models.AutoField(primary_key=True) cn ...

  10. django之多表查询

    一.创建模型 在Models创建如下模型: from django.db import models # Create your models here. # 用了OneToOneField和Fore ...

随机推荐

  1. 杭电oj1860:统计字符(字符串hash / 水题)

    统计字符 题目链接 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem D ...

  2. Python连载61-tkinter三种布局

    一.pack布局举例 #pack布局案例 import tkinter baseFrame = tkinter.Tk() #以下代码都是创建一个组件,然后布局 btn1 = tkinter.Butto ...

  3. 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作

    上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...

  4. 关于SSM中mybatis向oracle添加语句采用序列自增的问题

    在SSM向oracle数据库中插入语句时,报错如下: ### Error updating database.  Cause: java.sql.SQLException: 不支持的特性 ### SQ ...

  5. shell中取字符串子串的几种方式 截取substr

    shell中取字符串子串的几种方式 echo "123456789" | awk '{print substr($0,5,2)}' 截取 1)awk中函数substrsubstr( ...

  6. oracle学习笔记(4)

    4.oracle数据库的启动流程 windows操作系统 启动监听: lsnrctl start; 启动数据库实例:oradim-startup-sid 实例名 linux系统 启动监听:lsnrct ...

  7. C# winform中ListView用法

    this.listView1.GridLines = true; //显示表格线 this.listView1.View = View.Details;//显示表格细节 this.listView1. ...

  8. 浅谈Python 中 __getattr__与__getattribute__的区别

    __getattr__与__getattribute__均是一般实例属性截取函数(generic instance attribute interception method),其中,__getatt ...

  9. 转载:HTTP 请求头中的 X-Forwarded-For,X-Real-IP

    转载:https://www.cnblogs.com/diaosir/p/6890825.html  X-Forwarded-For 在使用nginx做反向代理时,我们为了记录整个的代理过程,我们往往 ...

  10. 【剑指Offer】面试题12. 矩阵中的路径

    题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径 ...