問題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)
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)
pageid=models.AutoField(primary_key=True)
class elements(models.Model):
elementid=models.AutoField(primary_key=True)
elementid=models.AutoField(primary_key=True)
pageid=models.ForeignKey(page)
解決方法:
page對象的paged是elements的外鍵,在使用save時,需要傳遞一個page對象實例
elements(pageid=page.objects.get(pageid=xxx).save()
