Django自学笔记 4-1 模型(Models)介绍

————总目录——前言——框架版本————

======================= 大爽歌作,made by big shuang =======================

参考:https://docs.djangoproject.com/en/2.2/topics/db/models/

一、模型(Models)介绍

1 介绍

模型是关于数据的唯一、确定的信息源。它包含存储数据的基本字段和行为。通常,每个模型映射到一个数据库表。

以上是官方文档的介绍,但太绕了,对于初学者,
粗略的讲:
建立一个模型(Model)就是建立了一个数据库表(table)。
模型规定属性,就是数据库表规定字段(field)。
每用模型类建立一个实例,都是在数据库表里插入一条数据。
准确地讲,可以这么理解模型:

  1. 每个数据库表,都是用来记录一种事物的数据信息的,比如学生表,是用来记录学生这种对象的多个维度的信息。每个信息维度(比如姓名、性别、生日、邮箱、学号)对应数据库表的一个字段。
  2. 对于学生这种对象,我们可以建立一个模型类(Model),模型的每个属性对应学生一个信息维度(比如姓名、性别、生日、邮箱、学号)。
  3. 数据库表的每一行,都是一个具体的学生的信息,对应也就是模型类(Model)的一个实例。

2 示例

以学生这种对象为例,其model的示例写法如下

from django.db import models


class Student(models.Model):
    gender = [
        ("m", "男"),
        ("f", "女")
    ]

    name = models.CharField(max_length=50, verbose_name="姓名")
    gender = models.CharField(max_length=10, choices=gender, default='m', verbose_name="性别")
    birthday = models.DateField(verbose_name="生日")
    email = models.EmailField(verbose_name="邮箱")
    info = models.CharField(max_length=255, verbose_name="个人简介", help_text="一句话介绍自己,不要超过250字")

    grade = models.CharField(max_length="4", verbose_name="年级")
    number = models.CharField(max_length="6", verbose_name="年级子学号")

    class Meta:
        constraints = [
            # 复合主键:保证 grade和number组合的student_id唯一
            models.UniqueConstraint(fields=['grade', 'number'], name='student_id'),
        ]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章