Re: [問題] Django模型與資料庫(書籍It's Django)

看板Python作者 (痛苦)時間9年前 (2016/03/24 04:34), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/3 (看更多)
大大你好 剛又摸索五小時 失敗的只好問你 我是python3已修從__unicode__ to __str__ 後來去網路查差異表時 也有提到python2 python3差別 是我沒注意 修改後 再次執行 如原文 step6:離開shell讓剛修改的models.py可以被載入直譯器 : : 在進入Django shell 並再次匯入 : : >>>from restaurant.models import Restaurant,Food : : >>>restaurants=Restaurant.objects.all() : : >>>restaurants : : [<Restaurant:派森家常小館>,<Restaurant:古意的餐廳>] : : #(這是書上預設的答案會出現兩家旅館名稱但是我操作卻是以下答案 : : [<Restaurant:Restaurant object>,<Restaurant:Restaurant object>, : : <Restaurant:Restaurant object>,<Restaurant:Restaurant object>, <Restaurant:Restaurant object>,<Restaurant:Restaurant object>, <Restaurant:Restaurant object>,<Restaurant:Restaurant object>, Q2:剛才發現在執行Q1之前 執行python manage.py makemigrations restaurants ,可得到0001_initial.py檔 但是要轉到資料庫執行 python manage.py migrate restaurant 0001 履次都無效 它說 Operationa to perform: Target specific migration:0001_initial,from restaurants Running migrations: No migrations to apply. 天啊 怎可能會無效 我都有0001_initial.py檔 竟然說找不到migrations到migrate 請問怎會這樣了?是這樣會造成Q1問題嗎? 我試過從0001檔的models 去做修改成0002檔 在修改回原本初檔到0003檔 讓0003檔執行migrate 竟然說過了OK @@ 奇怪 怎會這樣啦? 不過就算這樣過了 Q1問題還在 請問哪邊有錯 謝謝 ※ 引述《drm343 (一卡)》之銘言: : ※ 引述《jackjenny (痛苦)》之銘言: : 原文恕刪 : : [Q1]: : : ================================================================= : : step6:離開shell讓剛修改的models.py可以被載入直譯器 : : 在進入Django shell 並再次匯入 : : >>>from restaurant.models import Restaurant,Food : : >>>restaurants=Restaurant.objects.all() : : >>>restaurants : : [<Restaurant:派森家常小館>,<Restaurant:古意的餐廳>] : : #(這是書上預設的答案會出現兩家旅館名稱但是我操作三天都是以下答案 : : [<Restaurant:Restaurant object>,<Restaurant:Restaurant object>, : : <Restaurant:Restaurant object>,<Restaurant:Restaurant object>] ) : : #本文問題就是為什<Restaurant:Restaurant object>出現四次???? : : 而不是書上預期的答案會出現旅館名子?卡關四天 : : 先感謝高手大大們(雖然打字很辛苦 你們看更辛苦) : 我的第一感是你裝的 python 版本跟書上的不同,後來看到你 Q2 就確定了。 : __unicode__ 是 python2 的作法,到 python3 時要改用 __str__。 : python2 跟 python3 之間有很多細部差異,如果不清楚這些差異,建議跟書本 : 使用相同版本的 python,那本我好像只有在書局翻過一次,印象中是用 python2。 : : [Q2]: : : 證據就是輸入指令變成>>> : : 但一開始的歡迎畫面卻是Python3.4版本資訊 : : 讓我猶豫是回到python shell而不是Django shell : : 這方面有大大能回答嗎 : : 卡關三天很沮喪中............... : : 感謝 : 其實 django shell 只是幫你把 django 的環境自動載入 python shell 中, : 所以直接跑 python shell 再自己手動載入 django 也是一樣的意思,只是比 : 較累。 : 理論上你建立 django project 後,在 project 內一定會有一份 manage.py, : 在 linux 上預設應該是可執行的,所以在 manage.py 那個目錄直接下下面這 : 段程式就可以,不需要前面那個 python。 : ./manage.py shell -- KAI 微笑看世界100國 https://www.facebook.com/travel100countries -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.235.86 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1458765297.A.B56.html

03/24 14:43, , 1F
Q1: 你把db.sqlite3 刪掉,再migrate一次後試試
03/24 14:43, 1F

03/24 15:25, , 2F
已回信
03/24 15:25, 2F
文章代碼(AID): #1MyltnjM (Python)
文章代碼(AID): #1MyltnjM (Python)