常見問題彙總:
-
問題1:當執行python3 manage.py makemigrations出現如下遷移錯誤時的處理方法
-
問題2:數據庫的遷移文件混亂的解決辦法
- 數據庫中django_migrations表記錄了migrate的全過程,項目各應用中的migrate文件應與之對應,否則migrate會報錯
- 解決方案:
- 刪除所有migrations裏的所有000?_xxxx.py(_init_.py除外)
- 刪除數據庫
sql> drop database mywebdb; - 重新創建數據庫
sql> create database mywebdb default charset...; - 重新生成migrateions裏所有的0002_xxxx.py
python3 manage.py makemigrations - 重新更新數據庫
python3 manage.py migrate
管理器對象
每個繼承自models.Model 的模型類,都會有一個objects對象被同樣繼承下來。這個對象叫管理器對象
數據庫的增刪改查可以通過模型的管理器實現
class MyModel(models.Model):
...
MyModel.objects.create(...) #objects 是管理器對象
創建數據
Django ORM使用一種直觀的方式把數據庫表中的數據表示成Python對象
創建數據中每一條記錄就是創建一個數據對象
方案1
MyModel.objects.create(屬性1=值1,屬性2=值2,...)
- 成功:返回創建好的實體對象
- 失敗:拋出異常
方案2
創建MyModel實例對象,並調用save()進行保存
obj = MyModel(屬性=值,屬性=值)
obj.屬性 = 值
obj.save()
Django Shell
在Django提供了一個交互方式的操作項目叫Django Shell,它能夠在交互模式用項目工程的代碼執行相應的操作
利用Django Shell可以代替編寫view的代碼來進行直接操作
注意:項目代碼發生變化時,重新進入Django Shell
啓動方式:
python3 manage.py shell
liujiadeMacBook-Pro:mysite1 liujia$ python3 manage.py shell
>>> from bookstore.models import Author
>>> Author.objects.create(name='王老師',age=28,email='[email protected]')
<Author: Author object (1)>