python manage.py runserver
运行django服务器python
python manage.py migrate
建立django_session表
错误一:
raise AlreadyRegistered
('The model %s is already registered' % model.__name__)
django.contrib.admin.sites.AlreadyRegistered:
The model Event is already registeredshell
这里是由于看教程,多写了admin.site.register()和admin.site.Guest()方法数据库
错误二:
由于教程里面的的排版有问题,使得create_time方法没有被写入Guest类,
当咱们模型建好了,执行数据库迁移时没有把create_time字段迁移进去
迁移的命令以下
python manage.py makemigrations sign
python manage.py migrate
基本数据访问
当须要操做数据库时,再也不须要经过SQL语句,Django自动为这些模型提供
了高级的Python API.接下来练习数据库表的操做,运行manage.py提供的
shell命令
python manage.py shell
该shell模式为Django特别定制,在该模式下能够操做Django模型
from sign.models import Event,Guest
Event.object.all()
Guest.objects.all
from datetime import datetime
须要设置时间导入的的方法
插入数据
e1 = Event(id = 2,name = '红米Pro发布会',
limit=2000,status=True,address='北京水立方',
start_time=datetime(2016,8,10,14,0,0))
e1.save()
建立与保持共同执行
Event.objects.create(id=3,name='红米MAX发布会',
limit=2000,status =True,address='北京会展中心',
start_time=datetime(2016,9,22,14,0,0))
Guest.objects.create(realname='andy',
phone=12321312321,email='andy@mail.com',
sign=False,event_id=3)
查询数据
e1 = Event.objects.get(name = '红米MAX发布会')
e1
e1.address
或
Event.objects.get(name = '红米MAX发布会').limit
由于name='发布会'并无彻底匹配到发布会名称,因此会
抛出DoesNotExist异常.不少时候咱们使用模糊查询
table.objects.filter()方法是从数据库取得匹配的结果,
返回一个对象列表,若是记录中不存在的话,它会返回空
列表[].
e2 = Event.objects.filter(name__contains='发布会')
name为发布会的字段名,在name和contains之间用双下划线
链接.这里contains部分会被Django翻译成SQL语句中的LIKE
语句.
关联查询
>>> g1 = Guest.objects.get(sign='True')
>>> g1.event
<Event: 小米5发布会>
>>> g1.event.name
'小米5发布会'
>>> g1.event.address
'深圳迈科龙大厦'
>>>
删除
Guest.object.get(phone='13052939116').delete()
更新
第一种方法
>>> g3 = Guest.objects.get(sign='False')
>>> g3.realname='zsj'
>>> g3.save()
<bound method Model.save of <Guest: Guest object (3)>>
第二种方法
Guest.objects.select_for_update().
filter(sign='False').update(realname='robot')
django