【第十四周 第 1 节】:模型层(一)

第十四周-第一节课

字段类型

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

  • BooleanField

    代表true或者false, 也就是代表1和0;

  • IntegerField

  • BigIntField

  • FloatField

  • DecimalField


  • CharField

    在mysql中对应的就是varchar, 所以必须指定长度
    name = models.CharField(max_length=200)
    
  • TextField

    遇到大的文本和图片, 文件. 推荐做法是存当前的URI或者URL, 然后通过路径从静态资源服务器, 文档数据库或者云服务器中获取该文件


  • DateField

  • DateTimeField

  • AutoField

    如果没有指定主键, 当前模型会自动将一个自增id的IntegerField做为主键.

  • ImageField

  • EmailField

    当前django提供用来做特殊约束和校验的字段.

  • UUIDField

    一般来说, uuid会用作当前数据表的主键

字段选项/约束

  • primary_key

    将当前字段设置为主键

    id = models.AutoField(max_length=191, primary_key=True)
    
  • null

    默认为False, 如果为True, 当前字段可以为NULL.

  • blank

    代表空白字符"", 默认为False, 如果是True, 当前字段允许为空

    password = models.CharField(max_length=200, blank=False)
    
  • unique

    默认为False, 如果为True, 重复记录会报错

  • default

    默认值

  • 时间类型字段

    • auto_now_add

      create_time = models.DateTimeField(auto_now_add=True)
      
    • auto_now

      update_time = models.DateTimeField(auto_now=True)
      

创建测试应用myblog

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

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

调试

  • 修改manage.py进行debug调试

        print(sys.argv)
        # sys.argv = ['manage.py', 'migrate']
        execute_from_command_line(sys.argv)
    
  • 修复migrations

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

    • 更改migrations中的文件解决问题
    • 删除migrations文件推倒重来
      • django会在数据表django_migrations中创建同步记录
      • 删除对应的同步记录
      • 如果有创建表的记录, 需要删除表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值