生成数据库表信息后,这数据库板块就算添加完成了,小麦决定玩一下django的ORM映射语句,熟悉一下django的数据库操作。django提供了API,可供操作数据库交互:python manage.py shell


现在我们与数据库交互操作,都是操作的python对象,在django中被封装的ORM,查询时查出的还是python对象,这和java是一样的,如果要打印一个对象,只会打印出对象信息,并不会打印出对象内容,我们需要为对象添加类似toString的方法,在python中添加def __str__(self):

#polls/models.py
from django.db import models

class Question(models.Model):
   #省略Fields
   def __str__(self):
       return self.question_text

class Choice(models.Model):
   #省略Fields
   def __str__(self):
       return self.choice_text

这样就可以查询出对象信息了,小麦赶紧把增删改差全部来一遍:

#进入django的管理shell
python manage.py shell
#要想操作类,首先要引入
>>>from polls.models import Question, Choice
>>>from django.utils import timezone
#定义一个对象
>>>q=Question(question_text='star',pub_date=timezone.noe())
#orm对象保存
>>>q.save()

#
修改对象属性
>>>q.question_text='star moon sun'
>>>q.save()

#
查询对象
#查询所有对象
>>>Question.objects.all()
#按条件查询
>>>Question.objects.filter(id=1)
>>>Question.object.get(id=1)

#
删除操作
>>>q_del=Question.object.get(id=2)
>>>q_del.delete()

当然,还有一些关联操作,强大的django在一对多,一的一端可以直接创建多的对象,一的一端持有多的一端的集合,多的一端也可以根据一的一端为条件查询多的集合,真是无所不能了。不过小麦一向不喜欢强制关联,只要表之间有业务数据关联就好。一些约束条件可以用数据库的约束,比如唯一索引等。


继续探索着,看到django的admin,小麦若有所思,admin应该有自己的表,之前玩过的shiro,quartz都自带表,虽然可以支持自己建表,手中有轮,何必再造,小麦决定先跑起来admin看看:

#添加管理员
python manage.py createsuperuser

按提示输入管理员信息,再次启动:

小麦的django学习之路(三)_java

登录后台地址,可以看到django自带的admin已经ok了,但是作为管理我们model的管理后台,却是看不到我们的实体,小麦一想,看来还是需要安装进来。边思考边向下探索,确实需要将我们的实体install到admin里:

#修改我们的polls/admin.py
from django.contrib import admin

from .models import Question

admin.site.register(Question)

再次刷新管理页面,可以看到我们的Question实体已经注册进来了。简单体验了下管理后台操作实体对象,小麦现在已经对django整体有个初步认知,接下来便是写自己的业务逻辑了。