Django數據庫操作中的多對多關係

在實際問題中,我們經常遇到多對多的數據關係,比如一張表放作者,一張表放書籍,一本書可以有多個作者,怎麼來約束這種關係呢?在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的對應關係了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章