1. 程式人生 > >059:表關係之多對多

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節內容)