Django多對多表的三種創建方式


第一種:

  django orm自動幫我們創建:

  表一:

class Book(models.Model):
    name = models.CharField(max_length=32)
    authors = models.ManyToManyField(to='Author')

  表二:

class Author(models.Model):
    name = models.CharField(max_length=32)

  這種方式可以讓Django迅速的幫我們建一張關系表出來,好處是可以通過這張表進行跨表查詢,壞處是一張虛擬表,拓展性差。

第二種:

  存手動創建第三張表:

class Book(models.Model):
    name = models.CharField(max_length=32)
class Author(models.Model):
    name = models.CharField(max_length=32)
class Book2Author(models.Model):
    book = models.ForeignKey(to='Book')
    author = models.ForeignKey(to='Author')
    info = models.CharField(max_length=32)
    

  這種方式無法通過orm跨表查詢(不要使用)

第三種:

  半自動創建第三張表(可拓展性高,並且能夠符合orm查詢)

class Book(models.Model):
    name = models.CharField(max_length=32)
    authors = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author')) # 哪張表創建的就優先寫哪張表的小寫
class Author(models.Model):
    name = models.CharField(max_length=32)
class Book2Author(models.Model):
    book = models.ForeignKey(to='Book')
    author = models.ForeignKey(to='Author')
    info = models.CharField(max_length=32)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM