Django 定义了表示关系的字段。与各种数据库相同,通过不同的方式表达不同表单之间的关系。字段与字段的关系主要分为一对一关联、一对多关联、多对多关联三种。
结合Excel表解释下实现的结果是两级菜单对应的数据,table_2 是 table_1 的下级菜单, table_3 对应 table_2 的数据。
from django.db import modelsclass Table_1(models.Model): ... passclass Table_2(models.Model): Table_1_type = models.ForeignKey(Table_1, on_delete=models.CASCADE) ... passclass Table_3(models.Model): Table_2_type = models.ForeignKey(Table_2, on_delete=models.CASCADE) ... pass关联关系是通过数据库的内外键实现的,因此关联的数据不要太多,否则访问会非常慢。
其中包括一个非常重要的参数就是 on_delete 。常用的设置参数有:
结合Excel表解释下实现的结果是两级菜单对应的数据,table_2 是 table_1 的下级菜单,table_3 对应 table_2 的数据。
from django.db import modelsclass Table_1(models.Model): ... passclass Table_2(models.Model): Table_1_type = models.OneToOneField(Table_1, on_delete=models.CASCADE) ... passclass Table_3(models.Model): Table_2_type = models.OneToOneField(Table_2, on_delete=models.CASCADE) ... pass相当于多了一个层级的继承关系,到目前为止开发了那么多系统我就没用过。
除非必要,不建议多加一个层级使用。
与 ForeignKey 一样需要接受一个 on_delete 参数,其中用法与 ForeignKey 相同。
结合Excel表解释下,创建一个table_1表单,table_2对应table_1的内容形成,table_2和table_2_new这样的关系
from django.db import modelsclass Table_1(models.Model): ... passclass Table_2(models.Model): Table_1_type = models.ManyToManyField(Table_1, on_delete=models.CASCADE) ... pass构建表单的时候在 table_2 中不会显示关联的关系,会生成一个 table_2 新的表单关联到 table_2 中形成从属关系。
与 ForeignKey 一样需要接受一个 on_delete 参数,其中用法与 ForeignKey 相同。
| 留言与评论(共有 0 条评论) “” |