Re: [问题] Django模型与数据库(书籍It's Django)

楼主: jackjenny (痛苦)   2016-03-24 04:34:54
大大你好
刚又摸索五小时 失败的只好问你
我是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
作者: ihcaoe (Ihc)   2016-03-24 14:43:00
Q1: 你把db.sqlite3 删掉,再migrate一次后试试
作者: drm343 (一卡)   2016-03-24 15:25:00
已回信

Links booklink

Contact Us: admin [ a t ] ucptt.com