## 自增
V=models.AutoField(**options) #int;在Django代码内是自增
## 自增例子:
id = models.AutoField(primary_key=True)
pk = models.AutoField(primary_key=True)
V=models.CharField(max_length=None<, **options>) #varchar
id_card = models.CharField(max_length=18, null=True) # 身份证号
V=models.TextField(<**options>) #text
V=models.EmailField(<max_length=75, **options="">) #varchar
V=models.URLField(<verify_exists=true, **options="" max_length="200,">) #varchar
V=models.IntegerField(<**options>) #int (-2147483648,2147483647)
V=models.PositiveIntegerField(<**options>) #int 正整数(0,2147483647)
V=models.SmallIntegerField(<**options>) #smallint(-32768,32767)
V=models.PositiveSmallIntegerField(<**options>) #smallint 正整数(0,32767)
V=models.DecimalField(max_digits=必填, decimal_places=必填<, **options>)
## decimal 十进制小数123.123132
## max_digits数字中允许的最大位数 (数字最大长度)
## decimal_places存储的十进制位数(小数位个数)
a=models.DecimalField(max_digits=5, decimal_places=3)
## 可以的:1.000 12.000 1.100 1.120 1.123
## 不可以的:123.000 1.1234
a=models.DecimalField(max_digits=4, decimal_places=2)
## 可以的:1.00 12.00 1.10 1.12 1.123
## 不可以的:123.000 1.123
## DecimalField对应python的Decimal
## 数据库会自动补足够的零,如果不用的话,只能用下方FloatField
V=models.FloatField(<**options>) #浮点类型3.14
## FloatField对应python的float
a = models.FloatField(null=False, default=0.0)
V=models.BooleanField(**options) #boolean或bit
is_deleted = models.BooleanField(default='0', null=False) # 删除标志
V=models.NullBooleanField(<**options>) #bit字段上可以设置上null值
V=models.DateField(<auto_now=false, **options="" auto_now_add="False,">) #date #auto_now最后修改记录的日期;auto_now_add添加记录的日期2021-1-1
V=models.DateTimeField(<auto_now=false, **options="" auto_now_add="False,">) #datetime 例子2021-1-1 00:00:00
V=models.TimeField(<auto_now=false, **options="" auto_now_add="False,">) ## time 例子00:00:00
时间的写法需要增加代码,看下方
V=models.FileField(upload_to=None<, max_length=100, **options>) #varchar #upload_to指定保存目录可带格式,
V=models.ImageField(upload_to=None<, height_field=None, width_field=None, max_length=100, **options>) # upload_to保存上传的文件路径 height_field图片高 width_field图片宽
V=models.XMLField(schema_path=None<, **options>) #text ——————————————————————————–
V=models.IPAddressField(<**options>) #varchar
V=models.FilePathField(path=None<, match=None, recursive=False, max_length=100, **options>) #varchar
V=models.SlugField(<max_length=50, **options="">) #varchar,标签,内含索引
V=models.CommaSeparatedIntegerField(max_length=None<, **options>) #varchar
V=models.OneToOneField(User,blank=True,null=Ture,on_delete=models.SET_NULL) #一对一,字段关联表属性
V=models.ForeignKey(User,realted_name="user_log",blank=True,null=Ture,on_delete=models.SET_NULL) #一对多 外键,关联其它模型,创建关联索引
V=models.ManyToManyField(User,realted_name="group") #多对多,关联其它模型,创建多一个关联表(中间表)
字段名 | 描述 | 举例 | 作用于 | 写法 |
---|---|---|---|---|
null | 值是否设为空 | True False | ||
blank | 值是否可为空 | True False | ||
primary_key | 设置主键 | True | 整型 | V=models.CharField(max_length=None<, **options>, primary_key = True) |
auto_now | 时间自动添加 | True | 时间类型 | |
auto_now_add | 自动添加时间,但仅在创建的时候 | True | 时间类型 | |
max_length | 字段长度 | 字符串类型 | ||
default | 默认值 | xxx | ||
verbose_name | admin中显示的名字 | name | ||
db_column | 数据库字段名 | |||
unique | 唯一索引 | True | ||
db_index | 普通索引 | True |
class DateTimeFieldFormat(models.DateTimeField):
"""
数据库datetime类型字段格式化(%Y-%m-%d %H:%M:%S)
precision:需要保留的小数位数
"""
def __init__(self, verbose_name=None, name=None, precision=0, **kwargs):
self.precision = precision
super().__init__(verbose_name, name, **kwargs)
def db_type(self, connection):
return 'datetime(%d)' % self.precision
class xx(models.Model):
class Meta:
db_table = 'xx'
verbose_name = 'xx表'
add_time = DateTimeFieldFormat(auto_now_add=True)
update_time = DateTimeFieldFormat(auto_now=True)