Django表中的字段

-1 表模型如果不写主键,orm会自动创建一个主键

-2 常用

                   AutoField

                   int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。

                   IntegerField

                   一个整数类型,范围在 -2147483648 to 2147483647。

                   CharField

                   字符类型,必须提供max_length参数, max_length表示字符长度。

                   DateField

                   日期字段,日期格式  YYYY-MM-DD,相当于Python中的datetime.date()实例。

                   DateTimeField

                   日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例

                   BooleanField

                            -对到数据库int类型

         -不常用

                   SmallIntegerField

                   TextField:大文本

                   EmailField:虽然写的是email,存的时候,只要是字符串就可以(admin内的校验)

                   FileField(Field):存文件

                   DecimalField

         -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     注意:没查的字段不要再用了

                  

posted @ 2019-01-16 21:11  彼岸花纽约  阅读(303)  评论(0编辑  收藏  举报