本文介绍: 在ORM操作处了解的文章中,我们已经初步接触到了主键外键字段定义,那么本文以详细介绍主键外键使用方法等。

在ORM操作处了解的文章中,我们已经初步接触到了主键与外键的字段定义,那么本文以详细介绍主键外键的使用方法

1.外键

在Django中,外键是一种关系字段用于建立不同模型之间的关联关系。外键字段允许一个模型引用一个模型主键,从而创建模型之间的关系。
使用外键可以实现数据库之间的关联,例如一个博客文章可以有多个评论每个评论又关联一个特定的博客文章。在这种情况下,可以在评论模型使用外键字段引用博客文章模型主键
在Django中,定义外键字段非常简单。只需在模型中的字段使用ForeignKey类,并指定关联模型作为参数。例如:

class Personnel(models.Model):
    id = models.AutoField(verbose_name="工号", primary_key=True, db_index=True)
    name = models.CharField(verbose_name="姓名", max_length=16, null=False)
    age = models.PositiveIntegerField(verbose_name="年龄", default=1)

class Contact(models.Model):
    con_id = models.AutoField(verbose_name="联系表序号", primary_key=True)
    phone = models.CharField(verbose_name="手机号码", max_length=16, null=False)
    address = models.TextField(verbose_name="住址", default='宿舍')
    work_id = models.ForeignKey(to="Personnel", on_delete=models.SET_NULL, null=True)

那么在以上代码中有两个模型,分别是Personnel模型和Contact模型,其中Personnel模型中设定了id这个字段主键,Contact模型设定了con_id这个字段为主键,work_id为外键,让我们细看work_id这个字段的定义

to和on_delete这两个参数不可避免,但to_field参数不指定,一般会默认连接的主表的主键。
那么现在让我们看看on_delete这个参数里面哪些选项

def publisher():
    return Publisher.objects.get(pk=1)

class Book(models.Model):
   name = models.CharField(max_length=64,blank=True)
   content = models.TextField(blank=True)
   pub_time = models.DateTimeField(auto_now_add=True)
   publisher = models.ForeignKey(Publisher,on_delete=models.SET_DEFAULT,null=True,default=publisher)
2.主键

Django是一个流行的Python Web框架,它提供了许多强大的功能工具用于简化开发高性能、可扩展的Web应用程序。其中一个关键概念是主键(Primary Key),它在数据库用于唯一标识每个记录
在Django中,主键是一个特殊的字段,用于确保每个数据库记录唯一性。默认情况下,Django自动为每个模型(Model)添加一个名为”id“的主键字段,该字段使用自增整数作为唯一标识符。
主键在数据库中起着非常重要的作用。它不仅用于确保数据的唯一性,还可以用作数据之间的关联通过在模型中定义外键(Foreign Key),可以轻松地建立表与表之间的关系,实现数据的连接查询
Django提供了多种主键类型,可以根据实际需求选择合适的类型。除了默认的自增整数主键,还可以使用UUID、字符型字段等作为主键。这样可以更好适应不同类型应用程序数据库需求
使用Django开发应用程序时,主键的正确使用非常重要。它不仅能够提高数据的查询效率和准确性,还可以简化代码逻辑数据管理通过合理设计和使用主键,可以实现更高效、可靠的Web应用程序
总而言之,Django的主键是确保每个数据库记录的唯一性和关联性的重要工具。它为开发人员提供了灵活的选择,以满足各种应用程序数据库需求正确地使用主键可以提高数据管理查询效率,同时简化代码逻辑

原文地址:https://blog.csdn.net/xiaoyu070321/article/details/133687812

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_17119.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注