Хостинг Django от «Джино»
Table of contents

Доступ к данным

После создания модели Django автоматически предоставляет высокоуровневый API для работы с этими моделями. Изучите его, запустив команду python manage.py shell и набрав следующее:

>>> from books.models import Publisher
>>> p1 = Publisher(name='Addison-Wesley', address='75 Arlington Street',
...     city='Boston', state_province='MA', 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. Это позволит нам работать с таблицей базы данных, которая содержит информацию об издателях.

  • Мы создаём экземпляр этого класса, передав значения для каждого поля — name, address и так далее.

  • Чтобы сохранить объект в базе данных, воспользуйтесь методом save(). Django выполнит для этого SQL оператор INSERT.

  • Для того, чтобы получить информацию об издателях из базы данных, используйте атрибут Publisher.objects, который можно рассматривать как список всех издателей. Получаем список всех объектов Publisher из базы данных с помощью метода Publisher.objects.all(). Django выполнит SQL оператор SELECT.

Следует остановиться на одном моменте, если он не очевиден из примера. При создании объекта с помощью модели 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

Действительно, можно делать многое с помощью API для работы с базой данных, но сначала давайте позаботимся о небольших неудобствах.


Ищем Python программистов

Found misprint?
Select it with the mouse and hit Enter
Ctrl-Enter
Processed:
33 1 199 25


The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!

We are glad to hear your questions, comments or suggestions!
(Open in new tab)

Users number: 601

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
ЯМ:41001223475816


© 2008-2012 Ruslan Popov @ gmail.com Powered by Django 1.2.5