Django一对一查询,列类型及参数
一对一查询
表的创建
# 通过 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一对一查询,列类型及参数的更多相关文章
- django ORM 增删改查 模糊查询 字段类型 及参数等
ORM 相关 #sql中的表 #创建表: CREATE TABLE employee( id INT PRIMARY KEY auto_increment , name VARCHAR (), gen ...
- Django模型类之models字段类型和参数以及元数据meta
models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...
- oracle 查询数据一直提示:“error code [17004]; 无效的列类型”111111
oracle 查询数据一直提示:“error code [17004]; 无效的列类型”111111 问题场景:oracle,jpa,insert原因:插入的字段中有null.导致类型转换出问题,这个 ...
- Django ORM中常用字段和参数
一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...
- django模型查询操作
一旦创建好了数据模型,Django就会自动为我们提供一个数据库抽象API,允许创建.检索.更新和删除对象操作 下面的示例都是通过下面参考模型来对模型字段进行操作说明: from django.db i ...
- Django聚合查询 orm字段及属性
目录 一 聚合查询 1. 级联 级联删除 级联更新 2. 聚合函数 使用 aggregate 使用场景 3. 分组查询 语法 使用 annotate 代码 4. F与Q查询 F查询 Q查询 二 ORM ...
- Django orm常用字段和字段参数
1.Object Relational Mapping(ORM) 1.1ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象 ...
- Mybatis高级查询之一对一查询的四种方法
目录 1. 一对一查询 1.1 一对一嵌套结果查询 1.2 使用resultMap配置一对一映射 1.3 使用resultMap的association标签配置一对一映射 1.4 associatio ...
- Django REST framework--序列化
Django REST framework--序列化 基础准备工作 创建项目添加应用 (venv) lee@lee:~/PycharmProjects/Djdemo/djdemo$ python ma ...
随机推荐
- typescript属性类型接口
/* typeScript中的接口 - 1.属性类接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定 ...
- 【转载】 准人工智能分享Deep Mind报告 ——AI“元强化学习”
原文地址: https://www.sohu.com/a/231895305_200424 ------------------------------------------------------ ...
- Z-Score数据标准化(转载)
简介Z-Score标准化是数据处理的一种常用方法.通过它能够将不同量级的数据转化为统一量度的Z-Score分值进行比较. 一句话解释版本: Z-Score通过(x-μ)/σ将两组或多组数据转化为无单位 ...
- linux非root用户安装ncurses-devel依赖
很明显,如果我们通过yum或rpm下载安装,始终无法绕开root用户,除非我们不用yum或rpm.嗯,我们直接用源码安装.下载源码包,到http://ftp.gnu.org/gnu/ncurses/我 ...
- Spring cloud微服务安全实战-3-1 API安全 常见的安全机制
不考虑微服务这种复杂的环境下,只是写一个简单的api的时候,如何来保证api的安全. 什么是API
- java.net.NoRouteToHostException: Cannot assign requested address 问题分析(端口被用完的解决方法)
问题: 错误原因: 由于liunx 分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于 TIME_WAIT 状态,默认等待60s后释放.查 ...
- 【源码解析】Flink 是如何基于事件时间生成Timestamp和Watermark
生成Timestamp和Watermark 的三个重载方法介绍可参见上一篇博客: Flink assignAscendingTimestamps 生成水印的三个重载方法 之前想研究下Flink是怎么处 ...
- 【prometheus 抓取源】
配置prometheus从prometheus爬取数据 prometheus提供了下面这个端口来让其他prometheus来抓取(scrape)自己的时序数据: http://prometheus_i ...
- AI - H2O - 第一个示例
1 - Iris数据集 Iris数据集是常用的机器学习分类实验数据集,特点是数据量很小,可以快速学习. 数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性. Sepal.Leng ...
- Terence’s Stuff: Why do we do research?
This sound like a question best answered via a survey conducted by a body such as Vitae, an internat ...