ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

059:表关系之多对多

2019-12-28 15:55:08  阅读:255  来源: 互联网

标签:关系 article1 tag1 tags models 标签 Tag 059 之多


表关系之多对多场景:

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节内容)

标签:关系,article1,tag1,tags,models,标签,Tag,059,之多
来源: https://www.cnblogs.com/Carlos-Li/p/12111969.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有