zoukankan      html  css  js  c++  java
  • Django的AutoField字段

    Django是一个机智的框架

      默认情况下Djang会为ORM中定义的每一张表加上一个自增ID列,并且用这个列来做主键;出于一个MySQL-DBA的工作经历我觉得

      Djanog还真是机智;这样么说主要是因为我遇到过许多主从延时的问题,有些比较过分的会延时好几周,通常这些都是因为binlog格式

      为“ROW”但是表上不存在主键引起的。

      

      如果当前网站用的是Django开发的,我想就不会有这种事情发生了吧。

    AutoField

      Django默认的行为就像这样

    class TestModel(models.Model):
        id = models.AutoField(primary_key=True)

      数据库层面对应的SQL如下

    CREATE TABLE `myapp_testmodel` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    注意

      如果你想的工增加AutoField列,但是又不指定这个列做为主键的话,是会报错的

    class TestModel(models.Model):
        tid = models.AutoField()

      不显示指定主键,但是又给表增加AutoField列的话就会报错

    assert not cls._meta.auto_field, "Model %s can't have more than one AutoField." % cls._meta.label
    AssertionError: Model myapp.TestModel can't have more than one AutoField.

    ----

  • 相关阅读:
    git学习笔记
    angular自定义指令-1
    转 三范式
    CentOS 7 安装NVIDIA驱动实现修改分辨率和扩屏功能
    acm 2034
    acm 2031
    记票统计
    acm 2020 map 逆向输出
    acm 2014
    将输入的字符一个一个读入
  • 原文地址:https://www.cnblogs.com/JiangLe/p/9626470.html
Copyright © 2011-2022 走看看