Django学习之数据库API

进入Python交互控制台

python manage.py shell

之所以用上面的命令,而不是python,是因为manage.py设置了DJANGO_SETTINGS_MODULE环境变量。不需要我们手动去导入django模块。

导入Blog模型类

from blog.models import Blog

接下来,我们来学习一下数据库API

1、查询Blog中的所有数据

>>> Blog.objects.all()
[]
>>> 

因为,我们还没有插入任何数据,所以返回的是空的list。

2、插入数据

首先创建一个用户,因为存在外键User

>>> from django.contrib.auth.models import User
>>> User.objects.create(username='tmyyss')
<User: tmyyss>
>>> User.objects.all()
[<User: tmyyss>]

下面我们插入一条数据到Blog数据库

>>> user=User.objects.get(username='tmyyss')
>>> user
<User: tmyyss>
>>> blog=Blog.objects.create(user=user,title="Test,Test",text="you share roses get fun")
>>> blog
<Blog: Blog object>

3、通过blog实例访问相应的对象属性

>>> blog.id
4L
>>> blog.user
<User: tmyyss>
>>> blog.title
'Test,Test'
>>> blog.text
'you share roses get fun'
>>> blog.created_time
datetime.datetime(2015, 3, 26, 6, 42, 17, 839353, tzinfo=<UTC>)
>>> blog.published_time
>>> 

我们也改变属性值

>>> blog.title="HA HA! That funny"
>>> blog.save()
>>> blog
<Blog: Blog object>

咦,没有变化,为什么呢?通过查看官方文档得知,需要修改Blog模型,

修改的Blog模型如下

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone

# Create your models here.
class Blog(models.Model):
        user=models.ForeignKey(User)
        title=models.CharField(max_length=200)
        text=models.TextField()
        created_time=models.DateTimeField(default=timezone.now)
        published_time=models.DateTimeField(blank=True,null=True)

        def __unicode__(self):
                return self.title

重新运行python manage.py shell

>>> from blog.models import Blog
>>> Blog.objects.all()
[<Blog: HA HA! That funny>]

现在我们就能看见我们修改的内容。

4、过滤

为了方便演示效果,再添加两个Blog对象

>>> from django.contrib.auth.models import User
>>> 
>>> 
>>> user=User.objects.get(username='tmyyss')
>>> Blog.objects.create(user=user,title='I love Python.',text='I love Python,I love python')
<Blog: I love Python.>
>>> Blog.objects.create(user=user,title='I love Django.',text='I love Django,I love Django')
<Blog: I love Django.>


过滤使用关键词filter

>>> Blog.objects.filter(id=6)
[<Blog: I love Django.>]
>>> Blog.objects.filter(title='I love Python.')
[<Blog: I love Python.>]

5、排序

排序使用关键词

>>> Blog.objects.order_by('-created_time')
[<Blog: I love Django.>, <Blog: I love Python.>, <Blog: HA HA! That funny>]
>>> Blog.objects.order_by('-id')
[<Blog: I love Django.>, <Blog: I love Python.>, <Blog: HA HA! That funny>]
>>> Blog.objects.order_by('-title')
[<Blog: I love Python.>, <Blog: I love Django.>, <Blog: HA HA! That funny>]
原文地址:https://www.cnblogs.com/tmyyss/p/4368957.html