• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共43篇

    python3.X - Web - Django3.2.9

关闭

返回栏目

关闭

返回python3.X - Web - Django3.2.9栏目

17 - 请求 - models.py - 全部字段

作者:

贺及楼

成为作者

更新日期:2024-06-28 14:19:05

models.py - 全部字段

自增

  1. ## 自增
  2. V=models.AutoField(**options)    #int;在Django代码内是自增
  3. ## 自增例子:
  4. id = models.AutoField(primary_key=True)
  5. pk = models.AutoField(primary_key=True)

字符串

  1. V=models.CharField(max_length=None<, **options>)    #varchar
  2. id_card = models.CharField(max_length=18, null=True) # 身份证号
  3. V=models.TextField(<**options>)    #text
  4. V=models.EmailField(<max_length=75, **options="">)    #varchar
  5. V=models.URLField(<verify_exists=true, **options="" max_length="200,">)    #varchar

数字

  1. V=models.IntegerField(<**options>)    #int (-2147483648,2147483647)
  2. V=models.PositiveIntegerField(<**options>)    #int 正整数(0,2147483647)
  3. V=models.SmallIntegerField(<**options>)    #smallint(-32768,32767)
  4. V=models.PositiveSmallIntegerField(<**options>)    #smallint 正整数(0,32767)
  5. V=models.DecimalField(max_digits=必填, decimal_places=必填<, **options>)
  6. ## decimal 十进制小数123.123132
  7. ## max_digits数字中允许的最大位数 (数字最大长度)
  8. ## decimal_places存储的十进制位数(小数位个数)
  9. a=models.DecimalField(max_digits=5, decimal_places=3)
  10. ## 可以的:1.000 12.000 1.100 1.120 1.123
  11. ## 不可以的:123.000 1.1234
  12. a=models.DecimalField(max_digits=4, decimal_places=2)
  13. ## 可以的:1.00 12.00 1.10 1.12 1.123
  14. ## 不可以的:123.000 1.123
  15. ## DecimalField对应python的Decimal
  16. ## 数据库会自动补足够的零,如果不用的话,只能用下方FloatField
  17. V=models.FloatField(<**options>)    #浮点类型3.14
  18. ## FloatField对应python的float
  19. a = models.FloatField(null=False, default=0.0)

布尔

  1. V=models.BooleanField(**options)    #boolean或bit
  2. is_deleted = models.BooleanField(default='0', null=False) # 删除标志
  3. V=models.NullBooleanField(<**options>)    #bit字段上可以设置上null值

时间

  1. V=models.DateField(<auto_now=false, **options="" auto_now_add="False,">)  #date #auto_now最后修改记录的日期;auto_now_add添加记录的日期2021-1-1
  2. V=models.DateTimeField(<auto_now=false, **options="" auto_now_add="False,">)    #datetime 例子2021-1-1 00:00:00
  3. V=models.TimeField(<auto_now=false, **options="" auto_now_add="False,">)    ## time 例子00:00:00

时间的写法需要增加代码,看下方

文件

  1. V=models.FileField(upload_to=None<, max_length=100, **options>)    #varchar #upload_to指定保存目录可带格式,
  2. V=models.ImageField(upload_to=None<, height_field=None, width_field=None, max_length=100, **options>) # upload_to保存上传的文件路径 height_field图片高 width_field图片宽
  3. V=models.XMLField(schema_path=None<, **options>)    #text ——————————————————————————–

特殊

  1. V=models.IPAddressField(<**options>)    #varchar
  2. V=models.FilePathField(path=None<, match=None, recursive=False, max_length=100, **options>) #varchar
  3. V=models.SlugField(<max_length=50, **options="">)    #varchar,标签,内含索引
  4. V=models.CommaSeparatedIntegerField(max_length=None<, **options>)    #varchar

表关联

  1. V=models.OneToOneField(User,blank=True,null=Ture,on_delete=models.SET_NULL) #一对一,字段关联表属性
  2. V=models.ForeignKey(User,realted_name="user_log",blank=True,null=Ture,on_delete=models.SET_NULL) #一对多 外键,关联其它模型,创建关联索引
  3. 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

时间类

  1. class DateTimeFieldFormat(models.DateTimeField):
  2. """
  3. 数据库datetime类型字段格式化(%Y-%m-%d %H:%M:%S)
  4. precision:需要保留的小数位数
  5. """
  6. def __init__(self, verbose_name=None, name=None, precision=0, **kwargs):
  7. self.precision = precision
  8. super().__init__(verbose_name, name, **kwargs)
  9. def db_type(self, connection):
  10. return 'datetime(%d)' % self.precision
  11. class xx(models.Model):
  12. class Meta:
  13. db_table = 'xx'
  14. verbose_name = 'xx表'
  15. add_time = DateTimeFieldFormat(auto_now_add=True)
  16. update_time = DateTimeFieldFormat(auto_now=True)