django-blog:多对多查询
简单写一下多对多查询
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:多对多查询的更多相关文章
- Django:表多对多查询、聚合分组、FQ查询、事务
1表多对多的关系查询 准备工作创建表结构 from django.db import models # Create your models here. class Publisher(models. ...
- 数据库开发-Django ORM的多对多查询
数据库开发-Django ORM的多对多查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.联合主键问题 CREATE TABLE `employees` ( `emp_no` ...
- Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询
创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...
- django之跨表查询及添加记录
一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); 一本书只应该由一个出版商出 ...
- Django框架----跨表查询及添加记录
一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); 一本书只应该由一个出版商出 ...
- Django(多表查询操作)
首先了解一下 mysql中的表之间的关系,一对一,一对多,多对一,多对多. 一对多关系.多对一关系.一对一关系 至少都有一侧是单个实体,所以记录之间的联系通过外键实现,让外键指向这个实体. 实现这种关 ...
- Django的ORM常用查询操作总结(Django编程-3)
Django的ORM常用查询操作总结(Django编程-3) 示例:一个Student model: class Student(models.Model): name=models.CharFiel ...
- Django 之多表查询 与多表的使用
1.django的多表查询 主要区分为: 正向查询 逆向查询 1. 多表查询: 是一个复杂的查询,他分为对象查询和__模糊查询两种方式 2. 多表查询: 又分为 一对一查询, 一对多查询, 多对 ...
- 基于对象的跨表查询,多对多查询,多对多操作,聚合查询和分组查询,F查询和Q 查询
基于对象的跨表查询 一对多查询(班级表和学生表) 表结构创建 class Class(models.Model): id = models.AutoField(primary_key=True) cn ...
- django之多表查询
一.创建模型 在Models创建如下模型: from django.db import models # Create your models here. # 用了OneToOneField和Fore ...
随机推荐
- Unable to execute dex:Multuple dex files define 解决方法
困扰我两天的问题终于解决了,在网上查的方法无非有三种 一. Eclipse->Project->去掉Build Automatically->Clear ->Build Pro ...
- Python入门必学知识,30万年薪Python工程师带你学
Python是一种计算机编程语言.计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能 ...
- MVC 实例详解,蛮好的,适合新手
https://blog.csdn.net/f627422467/article/category/6360437
- Atcoder比赛副站
https://agc039.contest.atcoder.jp/
- 动态弹出框,iframe的name包含一串随机数
由于name是随机的,要定位name比较困难,此处由于iframe的标签是唯一的,所以可以用tag_name定位 framename=driver.find_element_by_tag_name(& ...
- C语言备忘录——取余与取模
前几天,一个小姐姐问我取余和取模有什么区别,我当时第一反应就是二者是一样的,但是小姐姐咬死说不一样.我去百度了一下还真的不一样.脑壳疼,我当初误导了多少人.所以为了帮助我记忆也为了帮助预防我误人子弟 ...
- CocosCreator - 向上传递事件(冒泡)
/** * 分发事件到事件流中. * this.node.dispatchEvent(new cc.Event.EventCustom("name",是否向上传递)) * ...
- redis常用的命令行以及操作
redis常用的命令行以及操作 转载酱紫人的理直气壮 最后发布于2018-07-30 17:00:41 阅读数 805 收藏 转载地址:https://blog.csdn.net/li_lening ...
- php观察者模式。
第一次写博客,大家多多关照!欢迎拍砖哦! 我也刚学设计模式,所以记录下来. <?php class person{ public $name; public $birthday; public ...
- crontab 实现Linux系统上定时任务的关键命令
附上原文链接 https://www.cnblogs.com/ftl1012/p/crontab.html 原文真是写得非常好,所谓他山之石可以攻玉~,我就不客气啦,哈哈