zoukankan      html  css  js  c++  java
  • django models实际操作中遇到的一些问题

    问题1.将主键id改成自动生成的python3 manage.py migrate时报下面的错误

    django.db.utils.InternalError: (1091, "Can't DROP 'id'; check that column/key exists")
     
    我猜测是因为我改了两个表的主键,其中A表主键是B表的外键,删除会有问题
     
    解决方法:
    1.删除app下migrations文件夹中000开头的记录文件
    2.删掉app对应的数据库drop database 数据库名;
    4.重新建立刚刚删除的数据库create database 数据库名;
    3.然后重新执行修改数据库的命令:
      python3 manage.py makemigrations
      python3 manage.py migrate
     

    问题2:django向数据库中添加中文时报错

    django.db.utils.InternalError: (1366, "Incorrect string value: '\xE7\x99\xBB\xE5\xBD\x95...' for column 'chinessname' at row 1")
     
    解决方法:创建数据库的时候设置编码格式
     CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
     

    问题3:增加主键没生效,每次都只是执行了update

    django的models通过AutoField设置自增主键后,没有递增,代码如下
    class elements(models.Model):
        elementid=models.AutoField(primary_key=True,default=1)
        pageid=models.ForeignKey(page)
     
    解决方法:去掉default=1
    如果有default,它实现的是update,只有去掉default,才执行insert
     

    问题4:models存储包含外键的数据时,报错

    ValueError: Cannot assign "'12'": "elements.pageid" must be a "page" instance.
     
    models的数据结构:
    class page(models.Model):
        pageid=models.AutoField(primary_key=True)
        
    class elements(models.Model):
        elementid=models.AutoField(primary_key=True)
        pageid=models.ForeignKey(page)
     
    解决方法:
    page对象的paged是elements的外键,在使用save时,需要传递一个page对象实例
    elements(pageid=page.objects.get(pageid=xxx).save()
     
  • 相关阅读:
    【原创】VNC-view配置
    【LVM】LVM自动扩容脚本
    【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
    【原】Centos 7 下创建LVM流程
    【Spring-AOP-学习笔记-7】@Around增强处理简单示例
    【转】libvirt kvm 虚拟机上网 – Bridge桥接
    【phantomjs】使用phantomjs生成highChart的图片(待完善)
    【Redis】使用Redis Sentinel实现Redis HA
    【Redis】配置redis主从复制
    【转载】优秀博文转载
  • 原文地址:https://www.cnblogs.com/meitian/p/6412265.html
Copyright © 2011-2022 走看看