Python - Django - ORM 自定义表名】的更多相关文章

通过 Django 建立的表 命名方式为:项目名_表名 可以将该默认命名方式进行修改 models.py: from django.db import models class Person(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() birthday = models.DateField(auto…
在meta 类中指定表名,在字段中通过db_column指定列名如下所示 class Record(models.Model): content=models.CharField(max_length=32,db_column='record_content') class Meta: db_table="Record"…
当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁,可以把不怎么常用的字段 单独拿出来做成一张表,然后用一对一的表关联起来 这样既保证数据都完整的保存下来,又能保证检索更快 models.py: from django.db import models # 作者 class Author(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=16, nul…
用 CharField 定义的字段在数据库中存放为 verchar 类型 自定义 char 类型字段需要下面的代码: class FixedCharField(models.Field): """ 自定义的 char 类型的字段类 """ def __init__(self, max_length, *args, **kwargs): self.max_length = max_length super(FixedCharField, self)…
不自定义表名的,网上有现成的,但如果自定义之后,则要变通一下了. app_insert = App.objects.get(name=app_name) site_insert = Site.objects.get(name=form.cleaned_data['site_name']) site_insert.app_name.add(app_insert) 正常的如下: a = Author.objects.get(id=1) b = Book.objects.get(id=50) b.au…
Django 自定义表名和字段名 通过db_table和db_column自定义数据表名和字段名 假如你的数据库里已经有了一张数据表,且该表包含多个字段,你希望通过Django直接访问该数据表的各个字段而不是重新建立新表,你这时可以通过db_table指定数据表名,还可以通过db_column指定希望访问的字段名. 在我们创建一个模型时,Django的ORM会根据应用名(app name), 模型名(model name)和字段名(field name)自动在数据库中创建数据表.比如我们有一个B…
前戏 ORM(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ORM的优势: ORM解决的主要问题是对象和关系的映射.它通常将一个类和一张表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段. ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据. 让软件开发人员专注于业务逻辑的处理,提高了开发效率. ORM的劣势: ORM的缺点是会在一定程度上牺牲程序的执行…
目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对多(ManyToManyField):在第三张关系表中新增数据 ORM 修改数据 ORM 删除和清空数据 跨表查询 基于对象的跨表查询 基于双下划线的跨表查询 聚合查询 示例 F查询 Q查询 Django ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在…
多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToManyFiled(),使用此种方式创建多对多表的时候,没有 add() remove() 等方法 适用方法: 如果第三张表没有额外的字段,就用第一种 如果第三张表有额外的字段,就用第三种或第一种 方法二: models.py: from django.db import models # 书 cla…
1.什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作.因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作. ORM映射关系: 表名 <-------> 类名 字段 <-------> 属性 表记录 <-------> 类实例对象 在python中ORM将一个Python的对象映射为数…
1.ORM介绍 ORM是“对象-关系-映射”的简称 映射关系: mysql---------Python 表名----------类名 字段----------属性 表记录--------实例化对象 ORM功能: 操作表:创建,修改,删除 操作数据行:增删改查 此外django没办法帮我们创建数据库,只能自己创建完后,再让django去链接 2.相关配置 如果要将模型转化为mysql数据库中的表,需要在setting中配置: DATABASES = { 'default': { 'ENGINE'…
1.在models.py中创创建类 # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models # Create your models here. class User(models.Model): """docstring for User""" #用户名列 字符型 指定长度 username=models.CharF…
多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系(one-to-one) 出版商模型:出版商有名称,所在城市以及email. 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系…
一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_class,on_delete=' ',options),第一个参数表示引用哪个模型,第二个参数表示如果外键引用的模型删除,该字段对应的的值应该怎么处理,第三个语法为其他字段参数. django ORM模型常用的on_delete的值 models.CASCADE:级联删除,即外键对应的那条数据删除了…
目录 1.ORM 2.ORM单表增删改查 13个必知必会的查询接口 filter基于双下划线的模糊查询 3.ORM多表增删改查 ORM 什么是ORM? ORM(object relational mapping) 对象关系映射,做数据库操作的 ORM中的对象关系映射 ORM的实际使用 1.首先,我们在django项目的app01/models.py中写入如下内容 class Book(models.Model): # id 这行可写可不写,如果不写的话,系统也会自动添加上去 id = model…
models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64, null=False, unique=True) def __str__(self): return "<Publisher object: {}>".format(…
ORM多表查询 创建表结构: from django.db import models # 创建表结构 # Create your models here. class Class_grade(models.Model): """年级表""" gid = models.AutoField(primary_key=True) gname = models.CharField(max_length=32) class Teacher(models.M…
# """ python manage.py makemigrations # 更新操作 python manage.py migrate # 转换sql语句到数据库 1. AutoField # int 自增列,必须填入参数 primary_key=True, 当 model 中没有自增列,则会创建一个列名为 id 的列 2. IntegerField # 一个整数类型 3. CharField #字符串类型,必须提供max_length 参数,max_length表示字符…
字段参数: null:用于表示某个字段可以为空 unique:如果设置为 unique=True,则该字段在此表中必须是唯一的 db_index:如果 db_index=True,则代表着为此字段设置数据库索引 default:为该字段设置默认值 关系字段参数: to:设置要关联的表 to_field:设置要关联的表的字段 related_name:反向操作时,使用的字段名,用于代替原反向查询时的 '表名_set' related_query_name:反向查询操作时,使用的连接前缀,用于替换表…
基于双下划线查询 根据存的时候,字段的数据格式衍生的查询方法 1.年龄大于35岁 res = models.AuthorDetails.objects.filter(age__lt=80) print(res) # 输出结果 <QuerySet [<AuthorDetails: yuhua@dd>, <AuthorDetails: cao@di.com>, <AuthorDetails: gao@doi.com>]> 2.年龄小于35岁 res = mode…
db_index=True  如果设置该字段就可以设置索引 auto_now_add  代表设置创建时候的时间 auto_now   每次更新数据记录时会更新该字段 to_field 设置要关联表的字段,一般是ID related_time 反向操作时,使用的字段名,用于代替原反向查询时的表名_set class Classes(models.Model): name = models.CharField(max_length=32) class Student(models.Model): n…
外键 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam.如果使用的是InnoDB引擎,是支持外键约束的. 外键的使用 使用外键前需要先确保相应外键已存储在数据库中(flask中会在你引用时自动保存相应外键). 如果想要引用另外一个app的模型,那么应该在传递to参数的时候,使用app.model_name进行指定. 如果模型的外键引用的是本身自己这个模型,那么to参数可以为'self',或者是这个模型的名字. 外键的删除 如果一个模型使用了外键.那么在对方那个模型被删掉后…
class UserInfo(AbstractUser): phone = models.BigIntegerField(null=True, blank=True) create_time = models.DateField(auto_now_add=True) blog = models.OneToOneField(to='Blog', null=True) avatar = models.FileField(upload_to='avatar/', default='avatar/def…
ORM 的对应关系: 类        --->    数据库表对象     --->    数据库行属性     --->    字段 操作数据库表     --->     创建/删除/修改表操作数据库行     --->     数据的增删改查 首先需要自己手动创建一个数据库 在 mysite 的 settings.py 中找到 DATABASES,并进行相应的配置 配置结果如下 DATABASES = { 'default': { # 连接的数据库类型 'ENGINE…
AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 primary_key=True 注:当model中如果没有自增列,则自动会创建一个列名为id的列 from django.db import models class UserInfo(models.Model): # 自动创建一个列名为id的且为自增的整数列 username = models.CharFie…
models.py: from django.db import models class Human(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() birthday = models.DateField(auto_now_add=True) 在数据库中添加几条数据 在 Python 脚本中调用 Dj…
准备工作: 首先创建一个名为 Py_Django 的数据库 新建项目,名为 mysite0 创建完成后需要进行几项配置 mysite0/settings.py 下 首先是 html 文件相关 其次是数据库配置 最后注释掉 CSRF 的代码 在 mysite0/__init__.py 中添加以下代码 import pymysql pymysql.install_as_MySQLdb() app01/models.py 中写上创建表的类 from django.db import models #…
测试版本: Python 2.7 Django 1.6.2 models.py from django.db import models class Article(models.Model): title = models.CharField(u'文章标题', max_length=120, blank=True) summary = models.CharField(u'文章摘要', max_length=255, blank=True) admin.py from django.contr…
在 app01/models.py 中添加 Book 类对象表 from django.db import models # Create your models here. # 出版社 class Publisher(models.Model): id = models.AutoField(primary_key=True) # 自增的 ID 主键 # 创建一个 varchar(64) 的唯一的不为空的字段 name = models.CharField(max_length=64, null…
#在项目目录下的modules.py中创建一个类,来自动生成一张表UserInfo class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.CharField(max_length=64) #在工程下的settings.py中增加 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'djan…