Django多对多表的三种创建方式,MTV与MVC概念
MTV与MVC MTV模型(django): M:模型层(models.py) T:templates V:views MVC模型: M:模型层(models.py) V:视图层(views.py) C:控制器(Controller) urls.py 本质:django的MTV也是MVC 多对多表三种创建方式 1.第一种 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) 2.第二种纯手动创建第三张表 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) 3.第三种半自动创建第三张表(可扩展性高,并且能够符合orm查询) class Book(models.Model): name = models.CharField(max_length=32) # 第三种创建表的方式
#想用django的一些方法,于是告诉django这两张表有多对多关系
authors = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author')) class Author(models.Model): name = models.CharField(max_length=32) # book = models.ManyToManyField(to='Book',through='Book2Author',through_fields=('author','book')) class Book2Author(models.Model): book = models.ForeignKey(to='Book') author = models.ForeignKey(to='Author') info = models.CharField(max_length=32)
# 第三种多对多关系不能使用多对多字段的增删改查方法 add(),set(),remove(),clear()
程序猿,要对自己狠一点!