一大波Model操作
1.创建表
1.1Meta源信息
from django.db import models
class UserInfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
cls = models.ForeinKey(cls)
class Meta:
# 1.数据库中生成的表名称 默认 app名称 + 下划线 + 类名
db_table = "table_name" # 自己指定创建的表名
# 2.Django Admin 中显示的表名称
verbose_name = "user" # 在Django admin后台显示时表名是users
# 3.verbose_name 加s
verbose_name_plural = "user" # 如果这个字段也是user,那么4中表名才会显示user
# 4.联合唯一索引
unique_together = (("name", "cls"),)
# 5.联合索引 (缺点是最左前缀, 写SQL语句基于password时不能命中索引, 查找慢。
# 如:select * from tb where password = "xxx" 就无法命索引)
index_together = [
("name", "cls"),
]
1.2常用字段
from django.db import models
class UserGroup(models.Model):
uid = models.AutoField(primary_key = True)
name = models.CharField(max_length = 32, null = True, blank = True)
email = models.EmailField(max_length = 32)
text = models.TextField()
ctime = models.DateTimeField(auto_now_add = True) # 只有添加时才会更新
uptime = models.DateTimeField(auto_now = True) # 只要修改就会更新时间
ip1 = models.IPAddressField() # 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制
ip2 = models.GenericIPAddressField() # 字符串类型,Django Admin以及 ModelForm中提供验证 Ipv4和Ipv6
active = models.BooleanField(default = True)
data01 = models.DateTimeField() # 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
data02 = models.DateField() # 日期格式 YYYY-MM- DD d
data03 = models.TimeField() # 时间格式 HH:MM[:ss[.uuuuuu]]
age = models.PositiveIntegerField() # 正小整数 0 ~ 32767
balance = models.SmallIntegerField() # 小整数 -32768 ~ 32767
money = models.PositiveIntegerField() # 正整数 0 ~ 2147483647
bignum = models.BigIntegerField() # 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
user_type_choices = (
(1, "超级用户"),
(2, "普通用户"),
(3, "普普通用户")
)
user_type_id = models.IntegerField(choices = user_type_choices, default = 1)
1.3字段参数
null --------------------- # 数据库中字段
blank ------------------------ # 表单验证可以为空
default ------------------------ # 数据库中字段的默认值
primary_key------------------------ # 数据库中字段是否为主键
db_index ------------------------ # 数据库中字段是否可以建立索引
unique ------------------------ # 数据库中字段是否可以建立唯一索引
2.一对多
2.1一对多基本操作(增删改查)
2.1.1 models.py
from django.db import models
class UserInfo(models.Model):
name