企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
~~~ class Test(models.Model): # 表名为应用名_类名,如blog_test # 自增长字段 auto_id = models.AutoField(primary_key=True) # primary_key主键,默认值为False auto_big_id = models.BigAutoField() # 允许的数值更加大 # 二进制数据 binary = models.BinaryField() # 布尔型 boolean = models.BooleanField() # 不允许为空 null_boolean = models.NullBooleanField() # 允许为空 # 整型 positive_small_integer = models.PositiveIntegerField() # 正整数,5个字节 small_integer = models.SmallIntegerField() # 6个字节 positive_integer = models.PositiveIntegerField() # 10个字节 integer = models.IntegerField(verbose_name='11个字节') # 11个字节 verbose_name别名 big_integer = models.BigIntegerField(unique=True) # 20个字节 unique 唯一索引 # 字符串类型 char = models.CharField(max_length=100, db_column='age', null=True, Blank=True) # varchar db_column修改字段,null,blank指的是否为空,默认值不为空;null指的是数据库层面,blank指的是前端表单方面 text = models.TextField(db_index=True, help_text='这个是longtext') # longtext,不需要指定长度 db_index索引,help_text表单的帮助信息 # 时间日期类型 date = models.DateField(unique_for_date=True, auto_now=True) # 年月日 unique_for_date表示这个字段的日期必须唯一 auto_now更新数据的时间 date_time = models.DateTimeField(editable=False, unique_for_month=True, auto_now_add=True) # 年月日时分秒 editable表单不能编辑 auto_now_add插入数据的时间 duration = models.DurationField() # 表示一段时间,int类型,底层是python timedelta实现 # 浮点型 float = models.FloatField() decimal = models.DecimalField(max_digits=4, decimal_places=2) # 需要指定整数有多少位,小数有多少位;max_digits最大位数,decimal_places表示小数位数 11.22 34.58 # 其它字段 email = models.EmailField() # 邮箱 image = models.ImageField() file = models.FileField() file_path = models.FilePathField() url = models.URLField() UUID = models.UUIDField() generic_ip_address = models.GenericIPAddressField() # ip地址,可以是ip4或6 # 关联模型 class A(models.Model): # 一对一 onetoone = models.OneToOneField(Test, related_name='one') # related_name关联中的反向查询,就是通过副表查询主表中数据 class B(models.Model): # 一对多 foreign = models.ForeignKey(A, on_delete=models.CASCADE) # 删除级联 # foreign = models.ForeignKey(A, on_delete=models.PROTECT) # foreign = models.ForeignKey(A, on_delete=models.SET_NULL,null=True,blank=True) # foreign = models.ForeignKey(A, on_delete=models.SET_DEFAULT,default=0) # foreign = models.ForeignKey(A, on_delete=models.DO_NOTHING) # foreign = models.ForeignKey(A, on_delete=models.SET) class C(models.Model): # 多对多 manytomany = models.ManyToManyField(B) # 一.所有字段都有的参数 # 1.primary_key # 2.db_column # 3.verbose_name # 4.null # 5.Blank # 6.unique # 7.help_text # 8.editable # # 二.个别字段才有的字段 # 1.max_length 字符串才拥有 # 2.unique_for_date,unique_for_month,unique_for_month,unique_for_year,auto_now,auto_now_add时间日期类型才拥有 # 3.max_digits,decimal_places为decimal才拥有 # # 三.关系型字段才有的参数 # 1.related_name # 2.on_delete # """ on_delet 当一个被外键关联的对象被删除时,Django将模仿on_delete参数定义的SQL约束执行相应操作 如下5种操作: CASCADE:模拟SQL语言中的ON DELETE CASCADE约束,将定义有外键的模型对象同时删除!(该操作为当前Django版本的默认操作!) PROTECT:阻止上面的删除操作,但是弹出ProtectedError异常 SET_NULL:将外键字段设为null,只有当字段设置了null=True时,方可使用该值 SET_DEFAULT:将外键字段设置为默认值.只有当字段设置了default参数时,方可使用 DO_NOTHING:什么也不做 SET():设置为一个传递给SET()的值或者一个回调函数的返回值.注意大小写 """ ~~~