django学习阶段总结:model说明

本文总结了Django中Model与MySQL数据库的关系,包括表与类的映射、字段与属性的对应、关系(一对一、一对多、多对多)的设置。在Django中,Model类代表数据库表,属性对应字段,参数设置通过属性方法。通过终端执行命令提交修改。文章以期末考试为例,阐述了一对一、一对多、多对多关系,并提醒在添加Model字段时要谨慎操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django中model对应的是数据库,会一些数据库当然更好,不会其实也没有太大的关系.

一.model和数据库Mysql的关系:

  • 1.表:对应类
  • 2.字段:对应类中的属性;值类型:对应属性中的方法;参数对应属性的参数.
  • 3.关系:一对一,一对多,多对多

任意model的修改都必须在终端执行提交-执行-的运行命令

1.1表:对应类

mysql对应的是python类

首先导入models,如果还需要使用其他类,可以先导入:

from django.db import models
from django.db.models.enums import Choices
from django.db.models.fields import AutoField
from django.forms import Form
from django.utils.timezone import now
# Create your models here.

model格式

可以看到model中建立的实际上是类,可以继承大量的django内置的类.

class Topic(models.Model):
    #小标题,不可为空
    title_small = models.TextField(
        max_length=60,
        verbose_name='小标题',
        null=True,
        default="小标题限制60个字"
        )
    def __str__(self):
        return str(self.title_big)
    class Meta:
        verbose_name='主题'
        verbose_name_plural = '主题'
  • 属性:个类可以有很多个属性
  • 主属性:主要用于注册到admin后,主要显示的属性
  • Meta类属性:对整个类的设置

1.2.MySQL字段:对应类中的属性;值类型:对应属性中的方法;MySQL字段参数对应属性中的参数.

title_samll是属性;models.TextField()是方法; max_length是参数

1.3.关系:一对一,一对多,多对多

实质是MySQL中不同表中的字段关系

  • 主键:A类去关联B类时,一般都是关联B类的ID字段,该字段为默认.不可重复和自增的序列数字.
  • 对象:view使用的对象就是models中的类

一对一关系

#一对一关系
#该表paper_topic字段和表Topic中的ID字段一一对应
paper_topic=models.OneToOneField(
    to_field='id',#字段
    to='Topic',#类名
    on_delete=models.CASCADE,#是否关联删除
    null=True,#是否可以为空
    verbose_name='主题',
    blank=True
    )
#一对多关系
belongto=models.ForeignKey(
    'Topic',
     on_delete=models.CASCADE,
     verbose_name='属于',
     null=True
     )
#多对多关系
quest=models.ManyToManyField('Quest')

一对多关系

#一对多关系
belongto是该类的属性名,对应类Topic的主键.
belongto=models.ForeignKey(
    'Topic',#类名
     on_delete=models.CASCADE,
     verbose_name='属于',
     null=True
     )

多对多关系

#多对多关系
quest=models.ManyToManyField('Quest')

以期末考试为例子:

试卷/题目/答案/学生列表为设计的模型.

  • 一个题目对应一个答案,一对一关系;
  • 一套试卷对应多个题目,一对多关系;
  • 多个学生对应多个多套科目,多对多关系.

二.提交到django;执行到数据库;运行数据库.

python manage.py makemigrations#提交,并没有实际执行到MySQL
python manage.py migrate#执行到数据库,数据库没有运行.
python manage.py runserver#运行数据库

建议:任何的异常都不要执行,除非你很有把握.

tips:增加model字段时,一次不要增加的太多,另:可以先使用default=,给到默认值,当数据库增加成功后再修改。

ajango官方建议只保证应用内的依赖关系迁移,不保证应用间的依赖关系迁移,这里要注意!

另,当添加需要保证唯一的字段时,有特殊的方法!后续补充!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值