1.1.1 生成查询
你创建完数据模型,django会自动提供给你数据库抽象的API,可以创建、获取、修改、删除对象,本篇文档讲解如何使用API。
我们参考下面模型,一个weblog:
#博客class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField() def __unicode__(self): return self.name#作者class Author(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField() def __unicode__(self): return self.name#目录class Entry(models.Model):
blog = models.ForeignKey(Blog)
headline = models.CharField(max_length=255)
body_text = models.TextField()
pub_date = models.DateTimeField()
authors = models.ManyToManyField(Author)
n_comments = models.IntegerField()
n_pingbacks = models.IntegerField()
rating = models.IntegerField() def __unicode__(self): return self.headline
1.1.2 创建对象
用python对象描述数据库表的数据,django使用一个直观的系统,一个模型类描述一个数据表,一个类的实例描述表的一条详细记录。使用模型的save()方法将对象创建到数据库。
from mysite.blog.models import Blog
b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
b.save()
只有执行save方法时,django才会执行sql把对象写入数据库。
1.1.3 保存修改的对象
保存修改仍然使用save()方法
b5.name = 'New name'b5.save()
1.1.4 保存 ForeignKey 和 ManyToManyField 字段
cheese_blog = Blog.objects.get(name=== Author.objects.create(name=
1.1.5 检索对象
从数据库里检索对象,可以通过模型的Manage来建立QuerySet,一个QuerySet表现为一个数据库中对象的结合,他可以有0个一个或多个过滤条件,在SQL里QuerySet相当于select语句用where或limit过滤。你通过模型的Manage来获取QuerySet,每个模型至少有一个Manage
1.1.6 检索所有的对象
检索表中所有数据,最简单的方式是用all().
all_entries = Entry.objects.all()
1.1.7 过滤检索特定对象
检索过滤特定查询结果,有两个方法。
filter(**kwargs) 返回一个新的匹配查询参数后的QuerySet
exclude(**kwargs) 返回一个新的不匹配查询参数后的QuerySet
Entry.objects.filter(pub_date__year=2006)
1.1.8 链接过滤