映射关系:

    表名 <-------> 类名

    字段 <-------> 属性

   表记录 <------->类实例对象

创建表(建立模型)

在Django的ORM中,不同于我们尝试用的mysql,这里数据库中的一张表,相当于我们在python中的一个类,在我们创建一个类,给他设定属性的时候,就相当于是在给这个表添加字段,实例化的一些属性,就是给这个字段添加的约束等。

在建立模型的时候,我们要考虑到表与表之间的联系。

一对一

一对一的关系,就例如我们一个人会有很多资料,我们会有住址,手机号,专业技能等,这些资料只与我们本身一一对应,这就是一个一对一的关系。

我们在建立一对一的关系时,使用的是models.OneToOneField,在设置这个关联属性的时候,在一对一的哪一张表上建立都是同样的。

一对多

一对多的关系,就如同一个班级可以由多个学生,然而一个学生只能有一个班级一样,

我们在建立一对多的关系时,使用的是models.ForeignKey,也就是mysql中的外键约束,将外键约束建在关系多的那张表上,例如一个班级可以有多个学生,那么我们的外键就创建在学生表上。

多对多

多对多的关系,就如同一个老师可以教多个班级,一个班级可以由多个老师一样。

我们在建立多对多的关系时,使用的是models.ManyToManyField,多对多关系的建立,需要另外一张关联表,这个方法就是Django帮助我们建立了第三章关系表的,我们可以通过第三张表来练习多对多的两张表的联系。

 1 class Book(models.Model):
 2     title=models.CharField(max_length=32)
 3     publishDate=models.DateField()
 4     price=models.DecimalField(max_digits=5,decimal_places=2)
 5     publish=models.ForeignKey("Publish")
 6     authors=models.ManyToManyField("Author")
 7 class Publish(models.Model):
 8     nid=models.AutoField(primary_key=True)
 9     name=models.CharField(max_length=32)
10     email=models.EmailField()
11 class Author(models.Model):
12     name = models.CharField(max_length=32)
13     age=models.IntegerField()
14 class AuthorDetail(models.Model):
15     addr = models.CharField(max_length=32)
16     email = models.EmailField()
17     author=models.OneToOneField("Author")
建立表关系样例

相关文章: