首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django 教程 --- Django 模型

Django模型提供了简单性,一致性,版本控制和高级元数据处理。模型基础包括– 每个模型都是一个子类Python类django.db.models.Model。...= models.CharField(max_length = 200) description = models.TextField() DjangoDjango模型中定义字段映射到数据库表字段中...Django模型内置字段验证是所有Django字段预定义默认验证。...每个字段都带有来自Django验证程序内置验证。例如,IntegerField带有内置验证,该验证只能存储整数值,并且也可以存储特定范围内值。...基本模型数据类型和字段列表 模型最重要部分和模型唯一需要部分是它定义数据库字段列表。字段由类属性指定。这是Django中使用所有Field类型列表。

2.1K10

Django模型

O/R中字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象。...,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长主键列。...综合演示 修改booktest/models.py中模型类,代码如下: from django.db import models #定义图书模型类BookInfo class BookInfo(models.Model...当没有为模型类定义管理器时,Django会为每一个模型类生成一个名为objects管理器,自定义管理器后,Django不再生成默认管理器objects。...books = models.Manager()  管理器Manager   管理器是Django模型进行数据库操作接口,Django应用每个模型类都拥有至少一个管理器。

6.1K21
您找到你想要的搜索结果了吗?
是的
没有找到

django模型

每个模型对 应数据库中唯一一张表 如何编写模型 模型:每个模型都用一个类表示,该类继承自django.db.models.Model。...字段选项——unique 如果该值设置为True,这个字段值在整张表中必须是唯一 模型meta选项 使用内部class Meta 定义模型元数据,例如: from django.db import...来表示随机排序 编写服务器模型 数据库迁移 迁移是Django用于同步你发生改变模型(添加一个字段,删除一个模型,等等)到你 数据库 迁移命令 makemigrations, 负责基于你模型修改创建一个新迁移...最后结果仍然是一个查询集,它包含标题以”What“开 头、发布日期在2005年1月30日至当天之间所有记录 过滤后查询集是独立 每次你筛选一个查询集,得到都是全新另一个查询集,它和之前查询集之间没有任何绑...这个异常是正在查询模型一个属性 —— 所以在上面的代码中, 如果没有主键为1 Entry 对象,Django 将引发一个Entry.DoesNotExist。

3.1K20

Django模型

Django模型 Django模型定义在models.py文件中。模型是MVT中M,也相当于MVC中M。 在Django中,模型必须继承自Model类。...(max_length=128, verbose_name='名称') # 类属性就是数据表中字段。...注意 模型类如果未指明表名,Django默认以小写app应用名_小写模型类名为数据库表名,一般我们会通过db_table指明数据库表名。...django会为表创建自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长主键列。...下面是Django中常用字段类型详情 字段类型 类型 说明 BigAutoField 自动增长BigIntegerField,通常不用指定,不指定时Django会自动创建属性名为id自动增长属性

1.9K20

django 模型关系

模型关系 关系数据库威力体现在表之间相互关联,Django提供了三种最常见数据库关系:多对一 (many-to-one),多对多(many-to-many),一对一(one-to-one)...多对一关系 多对多关系 一对一关系 多对一 django是使用django.db.models.ForeignKey 定义多对一关系 ForeignKey需要一个位置参数来指定本Model关联Model...): name = CharField(max_length=50) groups = models.ManyToManyField(Group) 建议以被关联模型名称复数形式做为 ManyToManyField...名字 在哪个模型中设置 ManyToManyField 并不重要,在两个模型中任选一个即可——不要在两个模型中都设置 一对一 一对一是通过django.db.models.OneToOneField...来实现,被关联Model会被加上 Unique限制,OneToOneField要一个位置参数,与模型关- 联类 当某个对象想扩展自另一个对象时,最常用方式就是在这个对象主键上添加一对一关系

1.4K30

django-7-django模型系统

>> https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types  InterField  CharFiled...2.1/ref/models/fields/#field-options primary_key auto_dreated unique指定是否为唯一 auto_now >>  通过模型类上管理器来构造... 模型类上管理器(class.objects)  queryset (惰性,,没有操作数据库)表示数据库中对象集合,等同于select 语句   query 获取mysql 语句  first()...) 根据给定条件获取过滤后queryset,多个条件用','连接  exclude(**kwargs) 作用和filter相反,去除不符合条件对象  多条件or连接  from django.db.models...分组  查询男生有几个,女生有几个  结合 values , annotate(num = Count('sex'))  **复杂查询**  from django.db.models.functions

78210

Django——模型Model

ORM简介 对象关系映射(Object Relation Mapping)实现了关系和数据库之间映射,隐藏了关系数据访问细节,不需要再编写SQL语句 创建模型 在models.py文件中创建类 继承...(max_length=20) pub_date = models.DateField() 数据迁移 1生成迁移文件:根据模型类生成创建表迁移文件。...OK Django默认采用sqlite3数据库,最终会生成如下数据表,其中自定义表命名规则是(应用名称模型类名) DATABASES = { 'default...image.png 外键数据处理 class HeroInfo(models.Model): name = models.CharField(max_length=20) gender...(BookInfo, on_delete=models.DO_NOTHING) django 升级到2.0之后,表与表之间关联时候,必须要写on_delete参数,否则会报异常: TypeError

69950

Django设计模型1.2

项进行数据库设置 django支持数据库包括:sqlite、mysql等主流数据库 Django默认使用SQLite数据库 创建应用 在一个项目中可以创建一到多个应用,每个应用进行一种业务处理 创建应用命令...: python manage.py startapp booktest 应用目录结构如下图 定义模型类 有一个数据表,就有一个模型类与之对应 打开models.py文件,定义模型类 引入包from...django.db import models 模型类继承自models.Model类 说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长 当输出对象时,会调用对象str方法 from django.db...=20) hgender = models.BooleanField() hcontent = models.CharField(max_length=100) hBook =...进行简单模型API练习 python manage.py shell 进入shell后提示如下: 引入需要包: from booktest.models import BookInfo,HeroInfo

42710

Django模型最佳实践

模型定义参考 字段 对字段名称限制 字段名不能是Python保留字,否则会导致语法错误 字段名不能有多个连续下划线,否则影响ORM查询操作 Django模型字段类 字段类 说明 AutoField...,默认为False blank 后台模型管理验证数据时,是否允许为NULL,默认为False choices 设定字段选项,各元组中第一个值是设置在模型值,第二值是人类可读值 db_column...on_delete:外键关联对象被删除时对应动作,可取值包括django.db.models中定义: CASCADE:级联删除。...ManyToManyField属性 symmetrical:是否建立对称多对多关系。 through:指定维持多对多关系中间表Django模型。...throughfields:定义了中间模型时可以指定建立多对多关系字段。 db_table:指定维持多对多关系中间表表名。

2.2K40

Django 模型继承 BaseModel

模型继承 模型继承在 Django 中与普通类继承在 Python 中工作方式几乎完全相同,但也仍应遵循本页开头内容。这意味着其基类应该继承自 django.db.models.Model。...一个例子: from django.db import models class CommonInfo(models.Model): name = models.CharField(max_length...多表继承 Django 支持第二种模型继承方式是层次结构中每个模型都是一个单独模型。每个模型都指向分离数据表,且可被独立查询和创建。...在 Django 中,模型字段通常不允许这样做。如果一个非抽象模型基类有一个名为 author 字段,你就不能在继承自该基类任何类中,创建另一个名为 author 模型字段或属性。...这个限制并不适用于从抽象模型继承模型字段。这些字段可以用另一个字段或值覆盖,或者通过设置 field_name = None 来删除。 警告 模型管理器是从抽象基类中继承

2K10

Django 模型查询2.3

如果未找到会引发"模型类.DoesNotExist"异常 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常 count():返回当前查询总条数 first...,[0:1].get()引发DoesNotExist异常 查询集缓存 每个查询集都包含一个缓存来最小化对数据库访问 在新建查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询结果存在查询集缓存中...')) django支持对F()对象使用算数运算 list.filter(bread__gte=F('bcommet') * 2) F()对象中还可以写作“模型类__列名”进行关联查询 list.filter...,会合并为And进行 需要进行or查询,使用Q()对象 Q对象(django.db.models.Q)用于封装一组关键字参数,这些关键字参数与“比较运算符”中相同 from django.db.models...: atitle = models.CharField(max_length=20) aParent = models.ForeignKey('self', null=True, blank

2.3K20

Django教程 —— 模型设计

Django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表增删改查操作。...使用Django进行数据库开发步骤如下: 在models.py中定义模型类 迁移 通过类和对象完成数据增删改查操作 Django模型设计 在上篇文章中我们创建了一个图书管理系统(BMSTest),并部署了一个...我们接着这个项目来介绍Django进行数据库开发过程,模型设计。 1、定义模型模型类定义在models.py文件中,继承自models.Model类。...迁移后目录结构图: Django默认采用 sqlite3 数据库,上图中 db.sqlite3 就是Django框架帮我们自动生成数据库文件。...,应用名 + 下划线 + 模型Django操作数据库表 数据库表建好了,看看Django如何便捷操作。

82320

Web 开发 Django 模型

简介 Django模型是真实数据简单明确描述,它包含了储存数据所必要字段和行为,在创建模型前需要先配置好数据库。...激活模型 通过配置上面 models.py 类中创建模型代码,已经足够 Django 为我们创建数据库和相应表结构了,现在我们将 polls 应用安装到我们 TestProject 项目中。...(迁移是 Django 对于模型定义即你数据库结构变化储存形式)。...模型操作 对模型对象操作,本质上就是数据库数据操作。下面我们就通过对模型对象操作实现对数据库记录基本CURD操作。...image.png 查询数据 Django 提供了多种方式来查询出数据库记录,如查询上面 Question 模型对应全部数据,某个id数据以及通过多条件过滤得到所需要数据。

1.1K10

Django 定义模型2.1

定义模型模型中定义属性,会生成表中字段 django根据属性类型确定以下信息: 当前选择数据库支持字段类型 渲染管理表单时使用默认html控件 在管理站点最低限度验证 django...会为表增加自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认主键列 属性命名限制 不能是python保留关键字 由于django查询方式...,不允许使用连续下划线 定义属性 定义属性时,需要字段类型 字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中 使用方式...:true/false 字段,此字段默认表单控制是CheckboxInput NullBooleanField:支持null、true、false三种值 CharField(max_length=字符长度...可以维护递归关联关系,使用'self'指定,详见“自关联” 用一访问多:对象.模型类小写_set bookinfo.heroinfo_set 用一访问一:对象.模型类小写 heroinfo.bookinfo

1.2K30

Django User模型扩展

通常情况下,Django提供User模型能够满足我们大部分需求,但是有时候我们需要给User添加一些格外功能和信息。 Django支持两种方式来扩展User模型。...代理模型 如果只是需要添加一些功能性操作,可以基于User创建一个代理模型。 关联模型 如果是需要添加格外字段信息,则可以创建一个与User关联模型,两者之间关系为1对1。...,则可以Django关联模型获取数据: >>> u = User.objects.get(username='fsmith') >>> mobile = u.profile.mobile 为了在管理后台中将...,它们只是与User模型存在一对一关联而已。...因此,当创建用户时候,profile并不会自动创建,可以通过django.db.models.signals.post_save来创建或者更新profile模型

47310

Django教程 —— 模型设计

Django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表增删改查操作。...使用Django进行数据库开发步骤如下: 在models.py中定义模型类 迁移 通过类和对象完成数据增删改查操作 Django模型设计 在上篇文章中我们创建了一个图书管理系统(BMSTest),...我们接着这个项目来介绍Django进行数据库开发过程,模型设计。 1、定义模型模型类定义在models.py文件中,继承自models.Model类。...迁移后目录结构图: Django默认采用 sqlite3 数据库,上图中 db.sqlite3 就是Django框架帮我们自动生成数据库文件。...> ,应用名 + 下划线 + 模型Django操作数据库表 数据库表建好了,看看Django如何便捷操作。

1K10

Django 模型成员2.2

属性 objects:是Manager类型对象,用于与数据库进行交互 当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects管理器 支持明确指定模型管理器 class...books = models.Manager() 当为模型类指定管理器后,django不再为模型类生成名为objects默认管理器 管理器Manager 管理器是Django模型进行数据库查询操作接口...,Django应用每个模型都拥有至少一个管理器 自定义管理器类主要用于两种情况 情况一:向管理器类中添加额外方法:见下面“创建对象”中方式二 情况二:修改管理器返回原始查询集:重写get_queryset...books = BookInfoManager() 创建对象 当创建对象时,django不会对数据库进行读写操作 调用save()方法才与数据库交互,将对象保存到数据库中 使用关键字参数构造模型对象很麻烦...:在进行单个查询时,模型对象不存在时会引发此异常,结合try/except使用 实例方法 str (self):重写object方法,此方法在将对象转换成字符串时会被调用 save():将模型对象保存到数据表中

50640

010:Django高级模型

本章知识点 1、Django模型关系字段介绍与使用 2、Django模型关系字段查询 知识点讲解 1、Django模型关系字段介绍与使用 业务主体间关系 学生 和 专业 关系 一个学生对应一个专业...ManyToManyField 一个老师教过所有学员 一个学员所有的老师 外键 专业 一 学生 多 外键字段 对应 专业表主键 我们研究这两种关系,从以下两个角度 1、...teacher_id from student_techer where = student_id = (Select id from student where name = “小白”)) 2、Django...模型关系字段查询 1、外键 查询学生对应项目 这样查询时候最简单,学生当中外键字段对应就是外键完整信息,可以直接获取 项目对应所有学生 视图部分 前端部分...2、多对多数据 老师和学生 老师对应所有学生 学生对应所有老师 本章总结 Django模型关系字段介绍与使用 Django模型关系字段查询

51120

django 关于User模型

User模型是这个框架核心部分。他完整路径是在django.contrib.auth.models.User。...新密码') user.save() 登录验证: Django验证系统已经帮我们实现了登录验证功能。...if user is not None: # 执行验证通过后代码 else: # 执行验证没有通过代码。 扩展用户模型Django内置User模型虽然已经足够强大了。...那么这时候我们就需要扩展用户模型了。扩展用户模型有多种方式。这里我们来一一讨论下。 1. 设置Proxy模型: 如果你对Django提供字段,以及验证方法都比较满意,没有什么需要改。...这种方式会比较麻烦,最好是确定自己对Django比较了解才推荐使用。步骤如下: 创建模型

1.1K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券