在實際問題中,我們經常遇到多對多的數據關係,比如一張表放作者,一張表放書籍,一本書可以有多個作者,怎麼來約束這種關係呢?在Django的orm中是如何處理的呢。
今天遇到了這個問題,簡單的來寫一下。
比如,在我們看書的時候,一本書,可以有多個作者,比如《鏈路預測》這本書的作者是 呂琳瑗 和 周濤
所以我準備了兩個表,作者表和書籍表,非常簡單,主要看一下這個的用法
class Author(models.Model):
name = models.CharField(max_length=20, verbose_name="作者名", default="")
age = models.IntegerField(default=10, verbose_name="作者年齡")
class Meta:
verbose_name = "作者信息"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class Book(models.Model):
book_name = models.CharField(max_length=50, verbose_name="書籍名", default="")
author = models.ManyToManyField(Author, verbose_name="作者")
class Meta:
verbose_name = "書籍信息"
verbose_name_plural = verbose_name
def __str__(self):
return self.book_name
在管理後臺添加兩個作者
然後去添加一本書,按住control選中兩個作者
然後可以看到,兩個作者被添加到書籍的作者列表中
我們到數據庫中看下,多了一個book_book_author表 打開這個表看一下,很清楚的就是書籍的id和作者id的對應關係了