Django之路--进阶(ORM数据库)

目录

字段类型

字段选项/约束

创建测试应用myblog

字段类型

有限使用,尽量使用和数据库一致的数据类型

  • 数字类型IntergerField

  • BooleanField:代表true和false,也就是代表1和0

  • BigIntField

  • FloatField:会遇到精度丢失问题

  • DecimalField


  • CharFeild

    #在mysql中对应的事Varchar,所以必须要指定长度
    ​
    name=models.CharField(max_lenght=200)
  • TextField

    可以存评论和文章。但是对于这种非关系型数据要存储在非关系到非关系型数据库,比如HBase,遇到大的文本和图片,文件推荐的是存在当前的url或者URL


  • AutoField

    如果没有指定主键,当前模型会自动指定一个自增的IntergerField类型作为主键

  • ImageField

  • EmailField

    当前Django用来做特殊约束和校验的字段

  • UUIDField

    属于自增键的替代品,用作当前数据表的主键:安全考虑,防爬虫。

                                 


  • DateField

  • DateTimeField

字段选项/约束

  • primarykey

    如果在当前的模型中设置主键

    id=AutoField(max_lenght=191,primarykey=True)
  • null:默认位False,如果事True则当前字段允许为null

  • blank:代表空白字符“”,默认位False,如果事True则当前字段允许为空

    不允许当前有空白字符

    password=models.charField(max_lenght=200,blank=False)
  • unique:默认为Flase,如果为True,重复记录会报错

  • default:默认值

  • choice

  • 时间类型字段约束:

    • auto_now_add

      create_time=models.DateTimeField(auto_now_add=True)

    • auto_now

      create_time=models.DateTimeField(auto_now=True)

创建测试应用myblog

  • 创建

python manage.py startapp myblog
  • 应用生效--->setting目录;INSTALLED_APPS

'myblog.apps.MyblogConfig',
  • models

    class Person(models.Model):
        name=models.CharField(max_length=64)
        email = models.EmailField()
        update_time=models.DateTimeField(auto_now=True)
        create_time=models.DateTimeField(auto_now_add=True)
        #测试null和blank——
        null=models.CharField(max_length=200,null=True)
        blank_test=models.CharField(max_length=200, blank=True)
  • 数据库迁移

    python  manage.py makemigration myblog
    ​
    python manage.py migrate 

    数据库生成成功

  • 以下是错误的写法。避雷:姓名不能当作主键

class Person(models.Model):
    name=models.CharField(max_length=64,primary_key=True)
    email = models.EmailField()
    update_time=models.DateTimeField(auto_now=True)
    create_time=models.DateTimeField(auto_now_add=True)


    null=models.CharField(max_length=200,null=True)
    blank_test=models.CharField(max_length=200, blank=True)

对于这上边的的错误,我们对于初学者老说又怎么样进行查找呢?

  • 调试:逐层分析,定位打点,自我救赎

    修改manage.py,进行debug测试

    print(sys.argv)
    ​
    excute_form_command_line(sys.argv)

    修改migrations

    执行python manage.py migrate 命令其实是顺序执行未同步的migrations

    **我们在如何二次提交又修改的表?直接执行会出现以下情况**

 

选1---->再回车

重新对model进行编排:删除migrations,再数据库中删除对应的同步记录,再把建的那一张表删除。

对model层进行的每一步编排都再数据库里的表中可见

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值