day84 django之手动创建第三张表 常用字段

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

  二: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

          同ForignKey

      ManyToManyField

          自关联

      多对多关系自动,手动创建第三张表(中介模型)

        第一种:全部手动创建,book跟author没有关联关系(不好,不建议使用)

        第二种:自动创建第三张表(不太好,第三张表如果有其它字段,就不行了)

        第三种:手动创建第三张表,并且用ManyToMany关联,所有的查询跟之前一样,只是增,删,改,需要通过表模型来处理

      db_constraint = False

      only和defer总结

        only和defer 返回结果是querysrt对象内包裹表模型的对象

        only,就是只查我指定的字段,一定会包含id 注意:没查的字段不要再用了

        defer,指定不取哪个字段,一定会包含id 注意:没查的字段不要再用了

猜你喜欢

转载自www.cnblogs.com/xiaocaiyang/p/10279442.html
今日推荐