Django模型

Django模型

模型是用来创建数据库的,定义一个类,该类继承了models.Model,类名代表了表名,也可以自己命名.模型实例:创建一个学生模型

from django.db import models

class Student(models.Model):
    stu_name = models.CharField(max_length=10)
    stu_sex = models.BooleanField()
    stu_birth = models.DateField()

    #给表取名字
    class Meta:
        db_table = 'stu'

想要在数据库生成表,先设置好setting.py里的配置数据库的东西。命令1:python manage.py makemigrations(迁移表),命令2:python manage.py migrate (数据库生成表)

模型的字段

  • CharField(参数:max_length) 【 表示字符串】
  • BooleanField() 【布尔类型,常用来保存性别,男为1,女为0】
  • AutoField () 【表示自动增长】
  • DateTimeField(参数1:auto_now_add =True 参数2:auto_now =True)【表示年月日,日期,参数表示第一次创建时的时间,参数2表示每次修改时的时间】
  • DateField() 【表示年月日,日期】
  • DecimaField(参数1:max_digits 参数2:dcimal_places)【用来表示成绩,最大为99.9,参数1:表示总的位数,参数2表示:小数后面多少位】
  • TextField() 【保存文本信息】
  • IntegerField() 【保存整数】
  • FloatField() 【保存浮点数】
  • FileField() 【文件上传字段】
  • ImageField(参数1:upload_to=” “) 【上传图片 参数1:指定文件上传路径】
  • stuname = models.CharField(max_length=6,null=True,blank=True) null 设置是否为空,针对数据库中,该字段是否为空
    blank 设置是否为空,针对表单提交,该字段是否为空
  • stuname = models.CharField(primary_key=True,unique=True) 【primary_key 表示这是主键,unique表示这是唯一的】

模型关系

  • 两张表一对一的关系关联:学生表和学生扩展表

学生表

from django.db import models

class Student(models.Model):
    stu_name = models.CharField(max_length=10)
    stu_sex = models.BooleahFiels()

    class Meta:
        db_table = 'stu'

学生扩展表

class StudentInfo(models.Model):
    stu_addr = models.CharField(max_length)
    stu_age = models.IntegerField()
    # 该字段实现 两张表一对一的关联  关键字:**OneToOneField**
    stu = models.OneToOneField(Student, on_delete=models.CASCADE)
  • 两张表一对多的关联:学生表和班级表

学生表
关联的字段要放在“多”的模型类中,比如 班级表和学生表,就要放在学生表的模型中

from django.db import models

class Student(models.Model):
    stu_name = models.CharField(max_length=10)
    stu_sex = models.BooleahFiels()
    # 该字段 实现两张表一对多的关系  关键字:Foreignkey
    g = models.Foreignkey(Grade,null=True)
    class Meta:
        db_table = 'stu'

班级表

class Grade(models.Model):
    g_name = models.CharFiled(max_length=10)
    g_desc = models.CharFiled(max_length=255)

    class Meta:
        db_table = 'grade'
  • 两张表多对多的关联:购物人表和物品表
    两张表多对多关联就需要一张中间表,在一个模型中使用了(ManyToManyField),就会自动创建一个中间表

购物人表


class GoodsUser(models.Model):
    u_name = models.CharField(max_length=10)
    class Meta:
        db_table = 'good_user'

物品表

class Goods(models.Model):
    g_name = models.CharField(max_length=10)
    # 该字段 实现了两张表多对多的关联,并且会创建一个中间表  关键字(ManyToManyField)
    g_user = models.ManyToManyField(GoodsUser)

    class Meta:
        db_table = 'goods'

中间表如图所示:
这里写图片描述

### 创建与开发 Django 模型 #### 定义模型类 在 Django 中,模型用于定义应用的数据结构和行为。每个模型都是一个 Python 类,继承自 `django.db.models.Model`[^3]。 ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) published_date = models.DateField() def __str__(self): return self.title ``` 此代码片段展示了如何创建名为 `Book` 的简单模型,其中包含三个字段:书名 (`title`)、作者(`author`) 和出版日期 (`published_date`)。 #### 执行迁移操作 编写好模型之后,需执行迁移命令使这些更改生效于数据库中。这一步骤会将 Python 代码转换为 SQL 并实际创建相应的表格[^5]。 ```bash python manage.py makemigrations python manage.py migrate ``` 上述两条指令分别负责生成新的迁移文件以及应用这些变更至目标数据库内。 #### 注册管理界面 为了让新建立的模型能够在 Django 管理后台显示出来,还需要对其进行注册: ```python # admin.py 文件内容如下所示: from django.contrib import admin from .models import Book admin.site.register(Book) ``` 这样管理员就可以通过 Web 接口轻松管理和维护书籍记录了。 #### 测试模型功能 最后可以通过 Django shell 来测试刚刚创建好的模型是否正常工作: ```bash python manage.py shell ``` 进入交互环境后尝试添加一条数据验证其可用性: ```python >>> from myapp.models import Book >>> new_book = Book(title="Django入门", author="张三", published_date='2023-09-08') >>> new_book.save() ``` 以上就是完整的 Django 模型创建流程介绍[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值