VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
  • python爬虫之django-blog:多对多查询

本站最新发布   Python从入门到精通|Python基础教程
试听地址  
https://www.xin3721.com/eschool/pythonxin3721/


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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进行相关推荐 该如何查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
        })
相关教程