django定义模型类

  • 模型类被定义在应用文件夹下的model.py中
  • 模型类必须继承Django的models.Model类
  • 属性名不能用连续的两条下划线__
  • 主键:primary key,简写 pk
  • 不需要主动定义,django会自动生成自增长的主键,属性名叫 id,
  • 如果开发者自己定义了主键,则django不会再生成默认的主键

格式:

属性名=models.字段类型(字段选项)

  • 字段类型:

类型 说明
AutoField 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建名为id的自动增长属性
BooleanField 布尔字段,值为True或False
NullBooleanField 支持Null、True、False三种值
CharField 字符串,必须指定max_length,表示最大字符个数
TextField 大文本字段,一般超过4000个字符时使用
IntegerField 整数
DecimalField 十进制浮点数,用python中的Decimal实例来表示
必须指定max_digits最大位数,decimal_places小数位数。
FloatField 浮点数
DateField 日期
1) 参数auto_now表示每次修改保存对象时,自动设置该字段为当前时间,用于保存"最后一次修改"时间,默认为False;
2) 参数auto_now_add表示当对象第一次被创建时自动设置保存当前时间,用于保存"创建时间"时间,默认为值为False;
3) 参数auto_now_addauto_now是相互排斥的,不能同时用到一个属性中
TimeField 时间,参数同DateField
DateTimeField 日期时间,参数同DateField
FileField 上传文件字段
ImageField 继承于FileField,对上传的内容进行校验,确保是有效的图片
  • 字段选项:

选项 默认值 描述 是否要迁移修改表结构
null False True表示表字段允许为空
unique False True表示表字段不能重复
db_column 属性名称 表字段名称
primary_key False True表示字段设置为了主键,一般作为AutoField的选项使用
db_index False 创建索引
default - 默认值
blank False 在django管理后台新增或编辑一条表数据时,该字段是否允许为空;
null是数据库范畴的概念,blank是表单验证范畴的
choices - 在django管理后台新增或编辑一条表数据时,该字段显示为下拉框,默认为编辑框

注意:

choices和blank主要是为django的管理后台页面服务的。

  • choices: 性别属性使用了choices选项后,在录入一条数据时,会以下拉框显示
  • blank:blank属性默认值为false, 表示录入一条数据时,当前字段必须填写,不能为空,否则js端js校验不通过,例如:下图的comment员工备注信息字段。

如下图:

  • 设置表名

  • 默认为:应用名小写_模型类名小写
  • 可通过通过Meta类指定表名
  示例:
# 如果应用名为users,则默认表名为:users_department
class Department(models.Model):
      ...
    class Meta:
        # 指定生成的数据库表的名字
        db_table = ‘department‘

原文地址:https://www.cnblogs.com/chichung/p/9905340.html

时间: 2024-07-31 05:11:04

django定义模型类的相关文章

django的模型类管理器-----------数据库操作的封装

模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句. 模型类的属性 属性objects:管理器,是Manager类型的对象,用于与数据库进行交互. 当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects. 管理器是D

django之模型类、迁移和数据库表之间的关系

环境配置:ubuntu 16.04,Django 1.8.2,MySQL-python 1.2.5 目的是为了了解模型类的定义和其对应数据库里面表的关系 实测发现: 关于模型类和数据库里面的表关系,模型类里面定义的类属性是为了生成数据库里面的表结构使用的,类似mysql里面创建一个表. 一个模型类,对应着数据库里面的一个表. 一个类属性,对应着数据库表里面的一个字段 一个类属性的类型(如charfield),对应着数据库里面字段类型. 进入python manage.py shell运行的pyt

Flask中定义模型类的几种情况

from datetime import datetime from werkzeug.security import generate_password_hash, check_password_hash from utils import constants from . import db class BaseModel(object): """模型基类,为每个模型补充创建时间与更新时间""" create_time = db.Column

7.Django模型类的定义和管理

Django的模型类是给ORM层服务的 1.每个数据模型都是django.db.models.Model的子类. 2.它的父类Model包含了所有必要的和数据库交互的方法,并提供了定义数据库字段的语法. 3.每个模型相当于一个数据库表(这条规则的例外情况是多对多关系,多对多关系的时候会多生成一张关系表), 4.每个属性是表中的一个字段.属性名就是字段名,类型就是字段类型 5.模型之间的三种关系 一对一(OneToOneField) 一对多(ForeignKey) 多对多(ManyToMangFi

django框架的模型类定义及操作

在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. 使用MySQL数据库首先需要安装驱动程序 pip install PyMySQL 在Django的工程同名子目录的__init__.py文件中添加如下语句 from pymysql import install_as_MySQLdb install_as_MySQLdb() 作用是让Django的ORM能以mysqldb的方式来调用PyMySQL. 修改DATABASES配置信息 DATABA

Django的模型层

Django模型层是Django框架自己定义的一套独特的ORM技术.使用django模型开发的首要任务就是定义模型类及其属性.每个模型类都可以被映射为数据库中的一个数据表,而类属性被映射数据字段,除此之外,数据库表的主键.外键.约束等也通过类属性完成定义. 1.模型定义,通过模型类中的Mata子类定义数据模型,比如数据库的表名.数据默认排序方式等. 2.普通字段类型,普通字段类型指模型类中除了外键关系外的数据字段属性. 3.常用字段参数,每个字段类型都有一些特定的HTML标签和表单验证参数, 4

Django:模型(model)和数据库(mysql)(一)

以一个栗子尝试来记录: 两个表存储在数据库中,BookInfo表示书,HeroInfo表示人物.一本书中有多个人物 在MySQL中新建一个数据库Django1,不用创建表,用Django模型来配置数据库 1.数据库ER图 2.数据库配置 在settings.py中进行数据库的配置. 留意:django默认连接的是sqlite3数据库.我们需要修改成MySQL django1/settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.b

Flask之自定义模型类

4.3自定义模型类 定义模型 模型表示程序使用的数据实体,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据库. 类中的属性对应数据库表中的列.id为主键,是由Flask-SQLAlchemy管理.db.Column类构造函数的第一个参数是数据库列和模型属性类型. 如下示例:定义了两个模型类,作者和书名. #coding=utf-8 from flask import Flask,render_templ

Django进阶Model篇002 - 模型类的定义

一.创建数据模型. 实例: 作者模型:一个作者有姓名. 作者详情模型:把作者的详情放到详情表,包含性别.email 地址和出生日期,作者详情模型与作者模型之间是一对一的关系(OneToOneField) 出版商模型:出版商有名称,地址,所在城市,省,国家,网址. 书籍模型:书籍有书名,出版日期,价格.一本书可能会有多个作者,一个作者也可以写多本书,所以作者与书籍的关系是多对多的关联关系(many-to-many),一本书只应该由一个出版商出版,所以出版商和书籍是一对多的关联关系(one-to-m