django学习第84天Django常用字段和参数
作者:互联网
一.常用的字段
1.AutoField int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 2.IntegerField 一个整数类型,范围在 -2147483648 to 2147483647。 3.CharField 字符类型,必须提供max_length参数, max_length表示字符长度。 4.DateField 日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。 5.DateTimeField 日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例 6.BooleanField -对到数据库int类型(0或1)
二.不常用的字段
SmallIntegerField TextField:大文本 EmailField:虽然写的是email,存的时候,只要是字符串就可以(admin内的校验) FileField(Field):存文件 DecimalField 10进制小数
三.orm字段参数
null -unique:唯一性约束 -db_index:给某个字段加索引 -default - DateField和DateTimeField # auto_now_add=True 表示我要新增一条数据,自动设成当前时间 # auto_now=True 只要修改,就更新成当前时间
四.关系字段
-ForeignKey -to -to_field -related_name -related_query_name -on_delete: 在删除的时候,做什么操作 -models.CASCADE 可以级联删除(lqz觉得不好) -models.SET_NULL (lqz推荐用它) -models.SET_DEFAULT -OneToOneField -同ForeignKey -ManyToManyField -自关联(自己关联) -评论表 id user article content parent_id 1 1 1 你好 null 2 2 1 傻逼 1
-多对多关系自动,手动创建第三张表(中介模型) 第一种:全部手动创建,book跟author没有关联关系(不好,不建议使用) 第二种:自动创建第三张表(不太好,第三张表如果有其它字段,就不行了) 第三张:手动创建第三张表,并且用ManyToMany关联,所有的查询跟之前一样,只是增,删,改,需要通过表模型来处理 -db_constraint=False -only和defer # 总结 # only和defer 返回结果是queryset对象内包裹表模型的对象 # only,就是只查我指定的字段,一定会包含id 注意:没查的字段不要再用了 # defer,指定不取哪个字段,一定会包含id 注意:没查的字段不要再用了
五.手动创建第三张表
class Book(models.Model): title = models.CharField(max_length=32, verbose_name="书名") # 自己创建第三张表,并通过ManyToManyField指定关联 class Author(models.Model): name = models.CharField(max_length=32, verbose_name="作者姓名") books = models.ManyToManyField(to="Book", through="Author2Book", through_fields=("author", "book")) # through_fields接受一个2元组('field1','field2'): # 其中field1是定义ManyToManyField的模型外键的名(author),field2是关联目标模型(book)的外键名。 class Author2Book(models.Model): author = models.ForeignKey(to="Author") book = models.ForeignKey(to="Book")
标签:第三张,name,models,创建,django,length,常用字,Django,id 来源: https://www.cnblogs.com/ye-hui/p/10285858.html