- 基本数据访问
基本数据访问
一旦你创建了模型,Django自动为这些模型提供了高级的Python API。 运行 python manage.py shell 并输入下面的内容试试看:
>>> from books.models import Publisher>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',... city='Berkeley', state_province='CA', country='U.S.A.',... website='http://www.apress.com/')>>> p1.save()>>> p2 = Publisher(name="O'Reilly", address='10 Fawcett St.',... city='Cambridge', state_province='MA', country='U.S.A.',... website='http://www.oreilly.com/')>>> p2.save()>>> publisher_list = Publisher.objects.all()>>> publisher_list[<Publisher: Publisher object>, <Publisher: Publisher object>]
这短短几行代码干了不少的事。 这里简单的说一下:
首先,导入Publisher模型类, 通过这个类我们可以与包含 出版社 的数据表进行交互。
接着,创建一个
Publisher类的实例并设置了字段name, address等的值。调用该对象的
save()方法,将对象保存到数据库中。 Django 会在后台执行一条INSERT语句。最后,使用
Publisher.objects属性从数据库取出出版商的信息,这个属性可以认为是包含出版商的记录集。 这个属性有许多方法, 这里先介绍调用Publisher.objects.all()方法获取数据库中Publisher类的所有对象。这个操作的幕后,Django执行了一条SQLSELECT语句。
这里有一个值得注意的地方,在这个例子可能并未清晰地展示。 当你使用Django modle API创建对象时Django并未将对象保存至数据库内,除非你调用save() 方法:
p1 = Publisher(...)# At this point, p1 is not saved to the database yet!p1.save()# Now it is.
如果需要一步完成对象的创建与存储至数据库,就使用objects.create() 方法。 下面的例子与之前的例子等价:
>>> p1 = Publisher.objects.create(name='Apress',... address='2855 Telegraph Avenue',... city='Berkeley', state_province='CA', country='U.S.A.',... website='http://www.apress.com/')>>> p2 = Publisher.objects.create(name="O'Reilly",... address='10 Fawcett St.', city='Cambridge',... state_province='MA', country='U.S.A.',... website='http://www.oreilly.com/')>>> publisher_list = Publisher.objects.all()>>> publisher_list
当然,你肯定想执行更多的Django数据库API试试看,不过,还是让我们先解决一点烦人的小问题。
