059:表关系之多对多
小明911 人气:0表关系之多对多场景:
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节内容)
加载全部内容