Django中模型(二)

Django中模型(二)

三、定义模型

1、模型、属性、表、字段间的关系:

一个模型类在数据库中对应一张表;在模型类中定义的属性,对应该模型对照表中的字段。

2、定义属性

A、概述

·django根据属性的类型确定以下信息

·当前选择的数据库支持字段的类型

·渲染管理表单时使用的默认html控件

·在管理站点最低限度的验证

B、

·django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列

C、属性命名限制

·遵循标识符规则

·由于django的查询方式,不允许使用连续的下划线

3、库

定义属性时,需要字段类型,字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中

·使用方式:

·导入from django.db import models

·通过models.Field创建字段类型的对象,赋值给属性

4、逻辑删除

·对于重要数据都做逻辑删除,不做物理删除,实现方法是定义isDelete属性,类型为BooleanField,默认值为False

5、字段类型

·AutoField

·一个根据实际ID自动增长的IntegerField,通常不指定如果不指定,一个主键字段将自动添加到模型中

·CharField(max_length=字符长度)

·字符串,默认的表单样式是 TextInput

·TextField

·大文本字段,一般超过4000使用,默认的表单控件是Textarea

·IntegerField

·整数

·DecimalField(max_digits=None, decimal_places=None)

·使用python的Decimal实例表示的十进制浮点数

·参数说明

·DecimalField.max_digits

·位数总数

·DecimalField.decimal_places

·小数点后的数字位数

·FloatField

·用Python的float实例来表示的浮点数

·BooleanField

·true/false 字段,此字段的默认表单控制是CheckboxInput

·NullBooleanField

·支持null、true、false三种值

·DateField([auto_now=False, auto_now_add=False])

·使用Python的datetime.date实例表示的日期

·参数说明

·DateField.auto_now

·每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false

·DateField.auto_now_add

·当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false

·说明

·该字段默认对应的表单控件是一个TextInput. 在管理员站点添加了一个JavaScript写的日历控件,和一个“Today"的快捷按钮,包含了一个额外的invalid_date错误消息键

·注意

·auto_now_add, auto_now, and default 这些设置是相互排斥的,他们之间的任何组合将会发生错误的结果

·TimeField

·使用Python的datetime.time实例表示的时间,参数同DateField

·DateTimeField

·使用Python的datetime.datetime实例表示的日期和时间,参数同DateField

·FileField

·一个上传文件的字段

·ImageField

·继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image

6、字段选项

·概述

·通过字段选项,可以实现对字段的约束

·在字段对象时通过关键字参数指定

·null

·如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False

·blanke

·如果为True,则该字段允许为空白,默认值是 False

·注意

·null是数据库范畴的概念,blank是表单验证证范畴的

·db_column

·字段的名称,如果未指定,则使用属性的名称

·db_index

·若值为 True, 则在表中会为此字段创建索引

·default

·默认值

·primary_key

·若为 True, 则该字段会成为模型的主键字段

·unique

·如果为 True, 这个字段在表中必须有唯一值

7、关系

·分类

·ForeignKey:一对多,将字段定义在多的端中

·ManyToManyField:多对多,将字段定义在两端中

·OneToOneField:一对一,将字段定义在任意一端中

·用一访问多

·格式

·对象.模型类小写_set

·示例

grade.students_set

·用一访问一

·格式

·对象.模型类小写

·示例

·grade.students

·访问id

·格式

·对象.属性_id

·示例

·student.sgrade_id

7、元选项

概念:

在模型类中定义Mate类,用于设置元信息

db_table:

定义表名,推荐使用小写字母,默认为项目名(小写)_类名(小写)

ordering:

对象的默认排序字段,获取对象的列表时使用。

ordering[‘id’]          :以id升序排列

ordering[‘-id’]           :以id降序排列

使用排序会增大数据库的开销

原文地址:https://www.cnblogs.com/xshan/p/8323464.html

时间: 2024-10-25 16:53:14

Django中模型(二)的相关文章

Django中模型(三)

Django中模型(三) 四.模型成员 1.类属性 objects:是Manager类的一个对象,作用是与数据库进行交互. 定义模型类时,没有定义管理器,则默认创建名为objects的管理器. 2.自定义模型管理器 格式:自定义名=models.Manager() 当为模型定义管理器后,Django将不再为模型生成objects模型管理器. 3.自定义管理器Manager类 概述:模型管理器是Django的模型进行与数据库进行交互个接口,一个模型可以有多个管理器. 作用:向管理器类中添加额外的方

Django中模型(五)

Django中模型(五) 六.模型查询 1.概述 查询集,表示从数据库获取的对象集合. 过滤器就是一个函数,基于所给的参数限制查询集结果.查询集可以有多个过滤器. 从sql角度来说,查询集合等价于select语句,过滤器等价于where条件. 2.查询集 A.概述 在管理器上调用过滤器方法返回查询集.查询集经过过滤器方法筛选后返回新的查询集,所以可以写成链式调用. B.惰式执行 创建查询集不会带来任何数据的访问,直到调用数据时,才会访问数据库 C.直接访问数据库的情况 迭代.序列化.与if合用

django中模型

django需要使用数据库,则需要安装对应的驱动,比如mysql,则需要安装mysqlclient驱动: pip install mysqlclient 在settings.py文件中配置数据库连接信息: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'firstsite', 'HOST': 'localhost', 'USER': 'root', 'PASSWORD': '123456', 'P

django中模型的简单操作

class Person_Tbl(models.Model):     '''     定义人物类     '''     name = models.CharField(max_length=254,default='')                     #姓名     sex =  models.CharField(max_length=125,default='')                       #性别     height = models.IntegerField

DJango周总结二:模型层,单表,多表操作,连表操作,数据库操作,事务

django周复习二 1,模型层:  1单表操作:   13个必会操作总结    返回QuerySet对象的方法有    all()    filter()    exclude()    order_by()    reverse()    distinct()    特殊的QuerySet    values()       返回一个可迭代的字典序列    values_list() 返回一个可迭代的元祖序列    返回具体对象的    get()    first()    last() 

解决在django中应用keras模型时出现的ValueError("Tensor %s is not an element of this graph." % obj)问题

用keras训练好模型,再在django初始化加载模型,这个过程没有问题,但是在调用到模型执行model.predict()的时候就报错: raise ValueError("Tensor %s is not an element of this graph." % obj) ValueError: Tensor Tensor("dense_2/Softmax:0", shape=(?, 2), dtype=float32) is not an element of

{Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 xxx 八 xxx 一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请

二 .redis在django中使用

一 .redis在django中使用 1. 方式一(不推荐使用通过连接池) redis_pool.py import redis Pool= redis.ConnectionPool(host='localhost', port=6379) urls.py from django.contrib import admin from django.urls import path from myapp import views urlpatterns = [ path('admin/', admi

django中使用原生sql

在Django中使用原生Sql主要有以下几种方式: 一:extra:结果集修改器,一种提供额外查询参数的机制 二:raw:执行原始sql并返回模型实例 三:直接执行自定义Sql ( 这种方式完全不依赖model,前两种还是要依赖于model ) 实例: 使用extra: 1:Book.objects.filter(publisher__name='广东人员出版社').extra(where=['price>50']) Book.objects.filter(publisher__name='广东