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()
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM