网站面包屑导航,织梦做网站的教程,成都网站seo排名优化,广汉网站在ORM操作处了解的文章中#xff0c;我们已经初步接触到了主键与外键的字段定义#xff0c;那么本文以详细介绍主键外键的使用方法等
1.外键
在Django中#xff0c;外键是一种关系字段#xff0c;用于建立不同模型之间的关联关系。外键字段允许一个模型引用另一个模型的主…在ORM操作处了解的文章中我们已经初步接触到了主键与外键的字段定义那么本文以详细介绍主键外键的使用方法等
1.外键
在Django中外键是一种关系字段用于建立不同模型之间的关联关系。外键字段允许一个模型引用另一个模型的主键从而创建模型之间的关系。 使用外键可以实现数据库之间的关联例如一个博客文章可以有多个评论每个评论又关联到一个特定的博客文章。在这种情况下可以在评论模型中使用外键字段来引用博客文章模型的主键。 在Django中定义外键字段非常简单。只需在模型中的字段中使用ForeignKey类并指定关联的模型作为参数。例如
class Personnel(models.Model):id models.AutoField(verbose_name工号, primary_keyTrue, db_indexTrue)name models.CharField(verbose_name姓名, max_length16, nullFalse)age models.PositiveIntegerField(verbose_name年龄, default1)class Contact(models.Model):con_id models.AutoField(verbose_name联系表序号, primary_keyTrue)phone models.CharField(verbose_name手机号码, max_length16, nullFalse)address models.TextField(verbose_name住址, default宿舍)work_id models.ForeignKey(toPersonnel, on_deletemodels.SET_NULL, nullTrue)那么在以上代码中有两个模型分别是Personnel模型和Contact模型其中Personnel模型中设定了id这个字段为主键Contact模型设定了con_id这个字段为主键work_id为外键让我们细看work_id这个字段的定义
to需要传递被外键连接的主表模型作为值如果连接时主表模型还没定义建议使用主表模型类名加上这样就不会报错。on_delete:需要传递当主表中的一条数据删除时从表中与这条数据相关联的数据要执行怎样的动作。to_field允许你指定要引用的目标模型中的特定字段作为外键
to和on_delete这两个参数不可避免但to_field参数不指定一般会默认为连接的主表的主键。 那么现在让我们看看on_delete这个参数里面有哪些选项
models.CASCADE级联操作当主表中被连接的一条数据删除时从表中所有与之关联的数据同时被删除models.SET_NULL当主表中的一行数据删除时从表中所有与之关联的数据的相关字段设置为null,此时注意定义外键时这个字段必须可以允许为空models.PROTECT当主表中的一行数据删除时由于从表中相关字段是受保护的外键所以都不允许删除models.SET_DEFAULT当主表中的一行数据删除时从表中所有相关的数据的关联字段设置为默认值此时注意定义外键时这个外键字段应该有一个默认值default也可以是一个函数(在任意字段均可)此时可以注意这时只传递函数名称django在操作时会帮我们自动执行
def publisher():return Publisher.objects.get(pk1)class Book(models.Model):name models.CharField(max_length64,blankTrue)content models.TextField(blankTrue)pub_time models.DateTimeField(auto_now_addTrue)publisher models.ForeignKey(Publisher,on_deletemodels.SET_DEFAULT,nullTrue,defaultpublisher)models.SET()当主表中的一条数据删除时从表中所有的关联数据字段设置为SET()中设置的值与models.SET_DEFAULT相似只不过此时从表中的相关字段不需要设置default参数models.DO_NOTHING什么都不做一切都看数据库级别的约束注数据库级别的默认约束为RESTRICT,这个约束与django中的models.PROTECT相似
2.主键
Django是一个流行的Python Web框架它提供了许多强大的功能和工具用于简化开发高性能、可扩展的Web应用程序。其中一个关键概念是主键Primary Key它在数据库中用于唯一标识每个记录。 在Django中主键是一个特殊的字段用于确保每个数据库记录的唯一性。默认情况下Django会自动为每个模型Model添加一个名为id的主键字段该字段使用自增长整数作为唯一标识符。 主键在数据库中起着非常重要的作用。它不仅用于确保数据的唯一性还可以用作数据之间的关联。通过在模型中定义外键Foreign Key可以轻松地建立表与表之间的关系实现数据的连接和查询。 Django提供了多种主键类型可以根据实际需求选择合适的类型。除了默认的自增长整数主键还可以使用UUID、字符型字段等作为主键。这样可以更好地适应不同类型的应用程序和数据库需求。 在使用Django开发应用程序时主键的正确使用非常重要。它不仅能够提高数据的查询效率和准确性还可以简化代码逻辑和数据管理。通过合理地设计和使用主键可以实现更高效、可靠的Web应用程序。 总而言之Django的主键是确保每个数据库记录的唯一性和关联性的重要工具。它为开发人员提供了灵活的选择以满足各种应用程序和数据库需求。正确地使用主键可以提高数据管理和查询效率同时简化代码逻辑。