码迷,mamicode.com
首页 > 其他好文 > 详细

059:表关系之多对多

时间:2019-01-06 12:45:39      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:http   文件   models   应用   orm   tags   art   .text   print   

表关系之多对多场景:

1、应用场景:比如文章和标签的关系。一篇文章可以有多个标签,一个标签可以被多个文章所引用。因此标签和文章的关系是典型的多对多的关。
2、实现方式:Django 为这种多对多的实现提供了专门的 Field 。叫做 ManyToManyField 。还是拿文章和标签为例进行讲解。

示例代码如下:

# models.py文件内容:
class Tag(models.Model):
    tname = models.CharField(max_length=100)

class Article(models.Model):
    title =models.CharField(max_length=100)
    content = models.TextField()
    tags = models.ManyToManyField(Tag)         # 当然也可以加上:related_name="information" 这样的字段内容

# views.py文件内容:
def index(request):
    # tag1 = Tag(tname="扎心了")
    # tag1.save()
    # article1 = Article(title="fuck1", content="fuck ")
    # article1.save()
    # 两种添加方式:
    # tag1.article_set.add(article1)
    # article1.tags.add(tag1)
  
   # 获取某类标签所有文章的方法: tags = Tag.objects.get(pk=1) artiles = tags.article_set.all() for artile in artiles: print(artile)
return HttpResponse(success)

注意:多对多的方式中不可用使用bulk=False方式,随便就忘记吧(可以看一下57节内容)

059:表关系之多对多

标签:http   文件   models   应用   orm   tags   art   .text   print   

原文地址:https://www.cnblogs.com/zheng-weimin/p/10227862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!