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

Django 模型继承 BaseModel

模型继承 模型继承在 Django 与普通类继承在 Python 工作方式几乎完全相同,但也仍应遵循本页开头内容。这意味着其基类应该继承自 django.db.models.Model。...常见情况下,你仅父类用于子类公共信息载体,因为你不会想在每个子类把这些代码都敲一遍。这样父类永远都不会单独使用,所以 抽象基类 是你需要。...这决定于你如何使用 '%(class)s' 和 '%(app_label)s' 构建关联名字和关联查询名。...多表继承 Django 支持第二种模型继承方式是层次结构每个模型都是一个单独模型。每个模型都指向分离数据表,且可被独立查询和创建。...指定父类连接字段 如上所述,Django 会自动创建一个 OneToOneField子类连接回非抽象父类。

2K10

拓展 User 模型

,用户可能还包含有昵称、头像、个性签名等等其它属性,因此仅仅使用 Django 内置 User 模型是不够。...即运行如下两条命令: $ python manage.py makemigrations $ python manage.py migrate OK,现在 Django 用户系统使用用户模型就是自定义...Django 没有提供一套自动化方式内置 User 迁移到自定义用户模型,因为 Django 已经为内置 User 模型生成了相关数据库迁移文件和数据库表。...如果非要这么做的话,需要手工修改迁移文件和数据库表,并且移动数据库相关用户数据。...所以我们采用另一种不改动数据库表方式来拓展用户模型,具体来说,我们在创建一个模型(通常命名为 Profile)来记录用户相关数据,然后使用一对一方式这个 Profile 模型和 User 关联起来

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

基于Django OneToOneField和ForeignKey区别详解

ManyToManyField类有两个经常使用参数:through和through_fields,通过这两个参数可以十分方便地建立中间项关联,如示例代码所示: from django.db import...ManyToManyField,其为这一字段建立一个单独属性,而是设定symmetrical属性为True,若期望使用此类迭代关系,可以手动设置其为False through 如上所示,用于设置中间项名字...,若不设置则默认为字段名称 db_contraint 是否在数据库建立约束 swappable 设置是否指向一个可交换模型 OneToOneField 源码OneToOneField设置如下...在概念我们可以理解其为设置unique属性为True一种类型,区别之处在于它“反向”数值会返回一个目标值,这对于继承关系表达十分有用,例如一下示例程序: from django.conf import...以上这篇基于Django OneToOneField和ForeignKey区别详解就是小编分享给大家全部内容了,希望能给大家一个参考。

2.3K20

Django源码metaclass使用如何兼容Python2和Python3

之前看Django源码时没太注意metaclass是怎么做2跟3兼容,直到看见Django2.0dev版只是用了Python3.xmetaclass使用方式。...Django源码 Django2.0开始不再兼容Python2.x了,因此Django2.0dev关于metaclass使用代码是这样: class Model(metaclass=ModelBase...): pass # 省略其他代码-by the5fire 点击查看源码 这是Python3.x关于metaclass使用,在Python2.x,我们知道metaclass使用是需要通过...那么问题来了,Django2.0之前版本是如何做到兼容???...再来看Djangosix.with_meta代码 有了上面的认识,我们再来看Django关于metaclass在Python2和Python3兼容处理就很好理解了。

1K30

django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

如果没有给定自述名,Django 根据字段属性名称自动创建自述名–就是属性名称空格替换成下划线。...所以,model 方法应该作用于 model 类实例(也就是说,在实例对象使用 model 方法,而不是在类直接使用)。 最好是只在一个地方(就是在 model )保存商业逻辑。...在 Django 中有三种继承方式: 通常,你只是想用父 model 来保存那些你不想在子 model 重复录入信息,父类并不单独使用。...然而如果将它做为其他 model 基类,那么该类字段就会被添加到子类。抽象基类和子类如果含有同名字段,就会导致错误(Django 抛出异常)。...OneToOneField 字段子类链接至非抽象父 model 。

3.1K30

django 1.8 官方文档翻译:2-1-1 模型语法

get_absolute_url() 它告诉Django 如何计算一个对象URL。Django 在它管理站点中使用到这个方法,在其它任何需要计算一个对象URL 时也将用到。...Django 未来一直会扩展内建模型方法功能并添加新参数。如果在你方法定义中使用*args, **kwargs,保证你代码自动支持这些新参数。...通常,你只想使用父类来持有一些信息,你不想在每个子模型中都敲一遍。这个类永远不会单独使用,所以你使用抽象基类。 如果你继承一个已经存在模型且想让每个模型具有它自己数据库表,那么应该使用多表继承。...它提供一种在 Python 语言层级提取公共信息方式,但在数据库层级,各个子类仍然只创建一个数据库。...指定链接父类字段 之前我们提到,Django 会自动创建一个 OneToOneField字段子类链接至非抽象父 model 。

4.9K20

Django基础——ORM字段和字段参数

操作数据行 --> 数据增删改查   不能创建数据库,自己动手创建数据库 使用DjangoORM详细步骤: 1....告诉Django用pymysql代替默认MySQLDB 连接MySQL数据库   在项目/__init__.py文件,写下面两句:   import pymysql   # 告诉...执行两个命令 1. python3 manage.py makemigrations --> 把models.py里面的更改记录到小本本 2. python3 manage.py...当 一张表某一些字段查询比较频繁,另外一些字段查询不是特别频繁   把不怎么常用字段 单独拿出来做成一张表 然后用过一对一关联起来 2....ORM用法   OneToOneField(to="") 举例:作者和作者详情是一对一;跟一对多,用法相同,只不过detail里面的不能重复;在数据库也是多一个detail_id 字段 总结

1.6K20

登录注册流程剖析!

分析使用验证码:由于验证码有时效性,所以如果我们把验证码和账号密码存到一起的话,可能需要频繁地读写数据库,这样对系统性能有很大影响,所以我们可以把验证码单独拿出来,存放到redis(或者session...对敏感数据进行加密:这个主要是防止数据库被不法分子盗取后,泄露掉用户密码,以及数据由前台传到后台过程,需要加密,防止爬虫。...这时候,我们可以利用分库分表思想,单一用户表user分为用户授权表user_auth和用户基础信息表user_basic。...分库分表基本思想是数据按照一定规则分配到不同数据库,并且在每个数据库再按照一定规则将数据分配到不同。这样,每个数据库和表数据量都比较小,可以有效地提高数据库查询速度和存储效率。...在user_auth,我们可以使用identifier来当做用户登录标识,credential当做用户秘钥,由于我们考虑到用户可能想通过不止一种方式登录(例如QQ、微信等),所以这里需要identity_type

45991

第一季 | 数据模型知多少?不如实践试一试

Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...代理模型 Django 抽象基类和 Python 抽象基类不同 抽象基类:只有继承子数据模型才会创建数据表,能在抽象父类定义共同项来减少重复输入,同时没有多表继承额外数据表和 join 操作开销...,父类不能单独使用。...多表继承:父类和子类都会创建对应数据表。两者之间隐含有一个 OneToOneField 关联,因每个数据模型都有表,故可对父子各自进行查询操作。...同时可以通过 parent.child 从父对象直接访问子对象,对子表查询都会有一个与其所有父表 join 操作。非常不推荐使用多表继承!

49010

【愚公系列】2021年12月 Python教学课程 33-Django框架之模型

文章目录 一、模型类定义 1.字段及参数 二、数据库配置 三、模型迁移 (建表) 四、单独py文件测试ORM操作需要配置参数 ---- 一、模型类定义 代码如下: from django.db...ForeignKey:外键字段,设置在 '一对多’’多’一方; OneToOneField:一对一字段,用来扩展已有字段 ManyToManyFiled:多对多字段,建议设置在查询频率较高 二...建表) 迁移由两步完成 : 生成迁移文件:根据模型类生成创建表语句 python manage.py makemigrations 执行迁移:根据第一步生成语句在数据库创建表 python manage.py...migrate 迁移之后出现0001文件,就代表数据库迁移完成,数据库有对应表 四、单独py文件测试ORM操作需要配置参数 import os if __name__ == "__main...__":   os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day58.settings")   import django  django.setup

55940

python测试开发django-36.OneToOneField关系查询

前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)字段,使用inlines内联显示。本篇继续学习一对一(OneToOneField)关系查询。...一篇list_display只显示了当前表字段信息,如果想显示关联表字段,需要关联查询。...一对一(OneToOneField)关系 接着前面的一篇python测试开发django-35.xadmin注册表信息,先设计Card和CarDetail表 # models.py from django.db...djangoshell模式,对表数据增删改查操作,打开cmd,cd到manage.py目录 python manage.py shell 先在Card表新增一条记录:card_id=’900100200300400500...django-35.xadmin注册表信息通过内联(inlines)可以在详情页面显示关联表信息 ?

85120

Django 学习笔记之模型高级用法(

我自己近期也总做了下总结,花大概两篇篇幅来分享下模型一些高级用法。 如果想熟悉 Django 用法,我认为应该一开始要熟悉一些细节用法,后面再了解 Django 实现原理。...而细节用法往往体现在一些差别用法,难以理解知识点。 1 复杂字段类型 经过前面的学习,我们知道模型字段类型一方面是指定数据库表列名称和数据类型,另一方面决定 HTML 表单标签类型。...通常不需要直接使用它,如果表没有设置主键时,Django 将会自动添加一个自增主键。BigAutoField 其实也是一个 BigIntegerField,但它支持 ID 自动增长。...db_column: 指定当前数据库表该字段列名。如果没有指定,Django 默认 Field 名作为字段名。 db_index: 如果赋值为 True, 将会为这个字段创建数据库索引。...如果用户没有定义该选项, Django会自动将自动创建,内容是该字段属性名下划线转换为空格结果。

2K30
领券