一对一查询
表的建立
# 经过 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中列类型对比来看python
""" 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给咱们提供的后台管理系统,咱们能够在里面对数据进行增删改查数据库
一、django-admin如何打开django
urlpatterns = [ url(r'^admin/', admin.site.urls), ]
咱们建立项目时会自动生成以下rui 在浏览器输入对应的url便可进入django-admin浏览器
二、建立用户app
""" 终端输入: python manage.py createsuperuser 输入用户名 邮箱(可不写) 密码 """
三、想要管理本身生成的表ui
须要在本身对应app的admin.py文件中注册一下url
from app02 import models admin.site.register(models.Student) admin.site.register(models.Teacher)
四、django-admin中的列类型与参数spa
如下的类型只有在django-admin的管理后台中起做用code
""" 前面为列类型, 括号中是咱们从数据库中看到的类型 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) """