一对一查询

表的创建

# 通过 OneToOneField 创建一对一的关系
from django.db import models # Create your models here.
class StaffInfo(models.Model):
name = models.CharField(max_length=32, null=True)
age = models.CharField(max_length=32, null=True) class Salary(models.Model):
money = models.CharField(max_length=32, null=True)
staff = models.OneToOneField("StaffInfo")

增删改查

# 增    和普通一样
models.StaffInfo.objects.create(name="xxx", age=12)
models.Salary.objects.create(money=3000, staff_id=2)
# 一对一关联的外键如果添加重复会报错,也就是说django已经帮我们做好了唯一索引 # 删 和普通的也是一样的
models.Salary.objects.filter(staff_id=2).delete()
# 也有级联删除的问题, 可以通过on_delete 修改值取消级联删除 # 改 和普通也一样
models.Salary.objects.filter(staff_id=2).update(money=2000) # 查 分为正查和反差两种
# 正查 通过点表中外键名跨表查询 row.staff.name
res = models.Salary.objects.all()
for row in res:
print(row.money, row.staff.name)
# 反差 点关联表的表明小写进行跨表查询 row.salary.money
res = models.StaffInfo.objects.all()
for row in res:
print(row.name, row.salary.money)

列类型

django中的列类型我们主要通过和MySQL中列类型对比来看

"""
MySQL列类型 Django列类型
tinyint 无
smallint (unsigned) SmallIntegerField (PositiveSmallIntegerField)
数字类型 int (unsigned) IntegerField (PositiveSmallIntegerField)
mediumint 无
bigint (unsigned) BigIntegerField (PositiveBigIntegerField) float FloatField
decimal(5,2)表示小数2位,最大长度5位 DecimalField char 无
字符串类型 varchar VarCharField
text TextField 时间类型 datetime(2019-7-1 1:1:1) DateTimeField
date (2019-7-1) DateField
"""

参数

"""
max_length 最大长度 null 是否为空 default 默认值 do_index 添加普通索引 unique 添加唯一索引 unique_together 联合唯一索引
index_together 唯一索引 这两个联合索引需要放在 类Meta中
class Meta:
unique_together = (
("字段1", "字段2"),
......
)
index_together = (
("字段1", "字段2"),
......
)
"""

django-admin

django-admin主要是django给我们提供的后台管理系统,我们可以在里面对数据进行增删改查

1、django-admin如何打开

urlpatterns = [
url(r'^admin/', admin.site.urls),
]

  我们创建项目时会自动生成如下rui  在浏览器输入对应的url即可进入django-admin

2、创建用户

"""
终端输入:
python manage.py createsuperuser 输入用户名 邮箱(可不写) 密码
"""

3、想要管理自己生成的表

  需要在自己对应app的admin.py文件中注册一下

from app02 import models

admin.site.register(models.Student)
admin.site.register(models.Teacher)

4、django-admin中的列类型与参数

  以下的类型只有在django-admin的管理后台中起作用

"""
前面为列类型, 括号中是我们从数据库中看到的类型
EmailField(CharField)
字符串类型,admin以及modelform用来输入验证是不是合法的邮箱字符串
IPAddressField(Field)
字符串类型 admin以及modelform用来输入IPV4 验证
GenericIpAddressField(Field)
字符串类型 用来输入 IPV4 以及 IPV6 验证
参数:
protocol 用于指定IPV4或IPV6 "both" "ipv4" "ipv6"
unpack_ipv4 如果指定为True 则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启此功能,需要protocol="both"
URLField(CharField)
字符串类型 用来输入url 验证
SlugField(CharField)
字符串 用来输入 数字 字母 下划线 连接符(减号) 验证
CommaSeparatedIntegerField(CharField)
字符串 验证 形式必须为 逗号分隔的数字
UUIDField(Field)
字符串 提供对uuid格式的验证
FieldField(Field)
可以选择文件 在数据库中看还是字符串类型 django-admin中列的参数 verbose_name Admin中显示的字段名称(相当于给列名改个名字)
blank Admin中是否允许用户输入为空
editable Admin中是否可以编辑(设为False直接隐藏)
help_text Admin中该字段的提示信息
choices Admin中显示选择框的内容
choice = (
(1,"男"),
(2,"女"),
)
如果你选择男,会把 1 存进数据库中
因为性别是永远不会变动的,所以用不变动的数据存在内存避免跨表操作 gender = IntegerField(choices=choices)
"""

Django一对一查询,列类型及参数的更多相关文章

  1. django ORM 增删改查 模糊查询 字段类型 及参数等

    ORM 相关 #sql中的表 #创建表: CREATE TABLE employee( id INT PRIMARY KEY auto_increment , name VARCHAR (), gen ...

  2. Django模型类之models字段类型和参数以及元数据meta

    models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...

  3. oracle 查询数据一直提示:“error code [17004]; 无效的列类型”111111

    oracle 查询数据一直提示:“error code [17004]; 无效的列类型”111111 问题场景:oracle,jpa,insert原因:插入的字段中有null.导致类型转换出问题,这个 ...

  4. Django ORM中常用字段和参数

    一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...

  5. django模型查询操作

    一旦创建好了数据模型,Django就会自动为我们提供一个数据库抽象API,允许创建.检索.更新和删除对象操作 下面的示例都是通过下面参考模型来对模型字段进行操作说明: from django.db i ...

  6. Django聚合查询 orm字段及属性

    目录 一 聚合查询 1. 级联 级联删除 级联更新 2. 聚合函数 使用 aggregate 使用场景 3. 分组查询 语法 使用 annotate 代码 4. F与Q查询 F查询 Q查询 二 ORM ...

  7. Django orm常用字段和字段参数

    1.Object Relational Mapping(ORM) 1.1ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象 ...

  8. Mybatis高级查询之一对一查询的四种方法

    目录 1. 一对一查询 1.1 一对一嵌套结果查询 1.2 使用resultMap配置一对一映射 1.3 使用resultMap的association标签配置一对一映射 1.4 associatio ...

  9. Django REST framework--序列化

    Django REST framework--序列化 基础准备工作 创建项目添加应用 (venv) lee@lee:~/PycharmProjects/Djdemo/djdemo$ python ma ...

随机推荐

  1. Python3基础 运算 加减乘除、取余数

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  2. Qt编写气体安全管理系统18-数据库设置

    一.前言 作为一个管理系统,数据库肯定是不可或缺的,Qt内置的sqlite数据库已经是够用的,而且本人亲测数据量能支持亿级别,而不是像网上很多人说的千万级别,我模拟过一亿多条数据,依然能够很好的查询, ...

  3. hppts的理解

    参考: https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

  4. 转 oracle 监控执行计划突然变化

    ########sample 执行计划突然变化 问题: 接受到一条信息,执行计划突然变化了. SELECT /*+ db120190621 no_expand */ INTERNAL_KEY FROM ...

  5. 【计算机视觉】OpenCV篇(6) - 平滑图像(卷积/滤波/模糊/降噪)

    平滑滤波 平滑滤波是低频增强的空间域滤波技术.空间域滤波技术即不经由傅立叶转换,直接处理影像中的像素,它的目的有两类:一类是模糊:另一类是消除噪音.空间域的平滑滤波一般采用简单平均法进行,就是求邻近像 ...

  6. 【linux基础-err】 tar命令-stdin: not in gzip format

    problem gzip: stdin: not in gzip format tar: Error is not recoverable: exiting now 解决方法 最后发现下载的压缩文件有 ...

  7. INTEL 7代CPU I5 7500 集显HD630 WIN7 64位

    HD630 在WIN7 下的硬件ID  (在设备管理器 - 显卡 - 属性 中查看): PCI\VEN_8086&DEV_5912&SUBSYS_D0001458&REV_04 ...

  8. Django 之redis的应用

    redis概述 redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,l ...

  9. 通过docker安装elasticsearch和安装ik分词器插件及安装kibana

    前提: 已经安装好docker运行环境: 步骤: 1.安装elasticsearch 6.2.2版本,目前最新版是7.2.0,这里之所以选择6.2.2是因为最新的SpringBoot2.1.6默认支持 ...

  10. Quartz.Net—TriggerBuilder

    TriggerBuilder TriggerBuilder是一个建造者模式,链式建造.通过静态方法构建一个TriggerBuilder实例,然后再调用类方法Build()创建一个ITrigger的实现 ...