Django全栈开发学习笔记(十一)——数据表的关系

数据表关系

一个模型对应数据库一张数据表,但是每张数据表之间是可以存在外键关联的,表与表之间一共有三种关联:一对一、一对多和多对多。

一对一关系

一对一关系,使用OneToOneField来构建 示例:
models.py文件

from django.db import models


# Create your models here.

class Performer(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    nationality = models.CharField(max_length=20)
    masterpiece = models.CharField(max_length=50)
    
    
class Performer_info(models.Model):
    id = models.IntegerField(primary_key=True)
    performer = models.OneToOneField(Performer, on_delete=models.CASCADE)
    birth = models.CharField(max_length=20)
    elapse = models.CharField(max_length=20)

一对多关系

一对多关系存在于两张或两张以上的数据表中,可以通过ForeignKey来构建,示例:

from django.db import models


# Create your models here.

class Performer(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    nationality = models.CharField(max_length=20)


class Program(models.Model):
    id = models.IntegerField(primary_key=True)
    performer = models.ForeignKey(Performer, on_delete=models.CASCADE)
    name = models.CharField(max_length=20)

多对多关系

多对多关系存在于两张或两张以上的数据表中,使用ManyToManyField来构建,示例:

from django.db import models


# Create your models here.

class Performer(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    nationality = models.CharField(max_length=20)


class Program(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    performer = models.ManyToManyField(Performer)

模型之间的关联是由OnToOneField、ForeignKey和ManyToManyField外键字段实现的,每个字段都有参数,参数说明如下:

  • to:必选参数,关联的模型名称
  • on_delete:必选参数,设置数据的删除模式,模式包括:CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET和DO_NOTING
  • limit_choices_to:设置外键的下拉框选项,用于模型表单和Admin后台系统
  • related_name:用于模型之间的关联查询,如反向查询
  • related_query_name:设置模型的查询名称,用于filter或get查询,若设置参数related_name,则以该参数为默认值,若没有设置,则以模型的名称小写为默认值。
  • to_field:设置外键与其他名字段的关联性,默认关联主键,若要关联其他字段,则该字段必须具有唯一性。
  • db_constraint:在数据库里是否创建外键约束,默认值为True
  • swappable:设置关联模型的替换功能,默认值为True,比如模型A关联模型B,想让模型C继承并替换模型B,使得模型A与模型C之间关联
  • symmetrical:仅限于ManyToManyField,设置多对多字段之间的对称模式
  • through:仅限于ManyToManyField,设置自定义模型C,用于管理和创建模型A和B的多对多关系
  • through_fields:仅限于ManyToManyField,设置模型C的字段,确认模型C的哪些字段用于管理模型A和模型B的多对多关系
  • db_table:仅限于ManyToManyField,为管理和存储多对多关系的数据表设置表名称
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Django和Vue.js是两个非常流行的开发框架,它们结合使用可以实现全栈开发。下面给出一个关于Django Vue3全栈开发学习文档的简要说明。 首先,学习文档应该从基础开始,介绍Django和Vue.js的基本概念和用法。对于初学者来说,可以先学习Django的核心概念,比如模型、视图和模板。然后,学习如何使用Django建立数据模型、创建RESTful API,并且如何将数据渲染到模板中。 接下来,学习文档应该逐步介绍Vue.js的基础知识,包括Vue的实例、组件和指令等。学习者可以通过编写简单的Vue组件来加深对Vue.js的理解,并学习如何使用Vue.js来处理前端的交互逻辑。 然后,学习文档可以介绍如何将Django和Vue.js结合起来进行全栈开发。这包括如何在Django中配置前后端分离的开发环境,如何使用Django提供的API来处理数据的增删改查操作,以及如何使用Vue.js来渲染和处理前端界面。 除了基础知识外,学习文档还应该提供一些实践项目来帮助学习者巩固所学知识。这些项目可以是基于Django和Vue.js的实际应用,比如一个简单的博客系统或一个任务管理应用。通过实际项目的实践,学习者可以更好地理解和运用所学知识。 最后,学习文档应该补充一些额外的资源和参考资料,比如官方文档、书籍和在线教程等,以帮助学习者进一步扩展自己的知识。 总而言之,一本Django Vue3全栈开发学习文档应该从基础概念开始,逐步引导学习者掌握Django和Vue.js的用法,并通过实践项目和额外资源提供进一步的学习支持。希望以上的回答对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧麦Sn0wSt@r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值