对django中foreignkey的简单使用详解

对Django中ForeignKey的简单使用详解

ForeignKey的作用

在Django的ORM中,ForeignKey是用来建立模型之间关系的一种字段类型。其作用是将一个模型与其他一个模型关联起来。

例如,在一个图书管理系统中,每一本书都是从一个出版社出版的,我们就可以在书的模型中使用ForeignKey关联出版社的模型。

ForeignKey的用法

ForeignKey的定义:

models.ForeignKey(to, on_delete, **options)
  • to :关联的模型。
  • on_delete:定义当被关联的模型数据被删除时,ForeignKey字段如何处理。
  • **options:其他关键字参数。

下面是一个简单的示例:

示例1:对一个模型进行关联

from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
    publication_date = models.DateField()
    num_pages = models.IntegerField(blank=True, null=True)

在以上代码中,Book模型使用ForeignKey关联了Publisher模型。通过将models.ForeignKey(Publisher, on_delete=models.CASCADE)添加到Book模型中的publisher字段,我们就可以通过一个外键实现这两个模型之间的关联。

示例2:调用被关联模型的属性

如果需要调用被关联模型的属性,可以使用.属性名来获取。

book_list = Book.objects.all()
for book in book_list:
    print(book.title, book.publisher.name)

在以上代码中,通过book.publisher.name来获取book模型关联的publisher模型的name属性。

外键数据关联的删除操作

当使用ForeignKey关联模型时,我们需要考虑当被关联模型数据被删除时,ForeignKey字段如何处理。on_delete参数决定了外键数据的删除行为。

  • models.CASCADE:当被关联模型数据被删除时,所有引用该数据的数据也将删除。
  • models.PROTECT:当被关联模型数据被删除时,将抛出ProtectedError
  • models.SET_NULL:当被关联模型数据被删除时,ForeignKey字段将设为NULL。
  • models.SET_DEFAULT:当被关联模型数据被删除时,ForeignKey字段将设为默认值。
  • models.DO_NOTHING:当被关联模型数据被删除时,什么也不做。

下面是一个简单的示例:

示例3:使用on_delete参数

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
    publication_date = models.DateField()
    num_pages = models.IntegerField(blank=True, null=True)

在以上代码中,我们将on_delete参数设置为models.CASCADE,当Publisher模型的某个数据被删除时,与之关联的Book模型数据也将被删除。

总结

通过上述示例,我们可以看到在Django框架中使用ForeignKey进行模型之间的关联非常简单且便捷。通过设置相关参数和调用方法,我们可以很方便地完成对其的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对django中foreignkey的简单使用详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django 中 Oauth2 实现第三方登陆

      python网站第三方登录,social-auth-app-django模块, social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块 目前流行的第三方登录都采用了OAuth2协议   安装: pip install social-auth-app-django   setting 配置: 添加应用,   …

    2023年4月10日
    00
  • 在Python的Django框架上部署ORM库的教程

    当我们选择使用Django框架进行web应用开发时,我们通常会使用ORM库来进行数据库交互,以便于我们使用Python语言轻松地进行数据库查询、插入、更新和删除等操作。 在本教程中,我们将详细讲解如何在Python的Django框架上部署ORM库的步骤,以及两个示例说明。 安装所需软件 首先,我们需要安装Python和Django框架。可以通过以下命令进行安…

    Django 2023年5月16日
    00
  • Python – Django – ORM 操作数据

    app01/models.py 中定义的类,也就是创建的表 from django.db import models # 类必须继承 models.Model class Admin(models.Model): # 创建一个主键自增的字段 id = models.AutoField(primary_key=True) # AutoField 为自增的字段 …

    Django 2023年4月10日
    00
  • django 权限设置-菜单显示

    问题:在用户登录后,如何只显示出用户权限的菜单呢?需要设置显示菜单权限 1.为了显示菜单,需要在models权限上添加is_menu(手动判断是否是查看)的icon(图标字符串) 在rbac中录入另一个的权限,判断是否显示菜单的,若是没有,返回一个空列表[],有则添加session中permission_menu_list=[{},{}] 1 from rb…

    Django 2023年4月12日
    00
  • 使用Django搭建一个基金模拟交易系统教程

    下面是使用Django搭建基金模拟交易系统的完整攻略: 1. 准备工作 在开始之前,需要确认是否已经安装Python和Django。如果还没有安装,请先进行安装。 2. 创建Django项目 使用Django创建一个新项目,运行如下命令: django-admin startproject fund_simulator 这个命令将创建一个名为fund_sim…

    Django 2023年5月16日
    00
  • django集成DjangoUeditor碰到的问题

    django集成DjangoUeditor富文本编辑器的教程,请参考:https://www.jianshu.com/p/d236a33a8c01 只参考到完成的那一步,能输入汉字,其他功能暂未考虑   本文仅记录集成过程中遇到的问题: 1. .File “D:\Python\Python37-32\lib\site-packages\django\view…

    Django 2023年4月10日
    00
  • python+django快速实现文件上传

    现在我将为你详细讲解”使用Python+Django快速实现文件上传”的完整攻略,并且包含两条实例说明。 前言 文件上传是Web开发中必不可少的功能之一。对于Python和Django用户来说,使用Django提供的文件存储、表单处理等功能可快速实现文件上传。 1. 创建Django项目 首先,你需要安装Django并创建一个Django项目,你可以在这里找…

    Django 2023年5月16日
    00
  • vscode调试django项目的方法

    下面是详细讲解“vscode调试django项目的方法”的完整攻略,分别包含了Windows和MacOS两个操作系统下的示例说明。 Windows操作系统下的示例说明 步骤一:安装Django插件 安装Visual Studio Code的Python插件后,我们可以在Visual Studio Code中安装Django插件,以便在调试Django项目时能…

    Django 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部