zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    CNN5 调用 C实现pool2d im2col col2im
    CUDA学习3 Max pooling (python c++ cuda)
    CUDA学习2 基础知识和Julia示例
    CUDA学习1 在Visual Studio和CodeBlocks上配置
    线性搜索
    CNN4 参数优化
    CNN3 im2col
    CNN2 多层卷积
    爬虫:Scrapy8
    爬虫:Scrapy7
  • 原文地址:https://www.cnblogs.com/ye-hui/p/10285858.html
Copyright © 2011-2022 走看看