Select it with the mouse and hit Enter
| на поддержку перевода |
|
|
ЯМ:41001223475816
Документация на русском языке для Django стала реальностью. Благодаря новым возможностям движка Sphinx мы можем оперативно дополнять перевод, по мере обновления оригинальной документации.
После создания модели 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 для работы с базой данных, но сначала давайте позаботимся о небольших неудобствах.
В 1.4.3 корректно работает "from books.models import Publisher".
+1 sva,
alerion если против, то пожалуйста попробуйте сами, С теми командами которые указаны в этой главе, этого руководства.
Согласен с sva, без названия проекта шелл выводит ошибку.
ответить sva
в версии 1.4 вместо
>>> from books.models import Publisher
нужно писать
>>> from mysite.books.models import Publisher
Это вы почему так решили? Книга описывает старую структуру проекта, в которой название проекта можно не включать(что очень рекомендуется). Да и в 1.4 не обязательно, если приложение находится в корне проекта.
в версии 1.4 вместо
>>> from books.models import Publisher
нужно писать
>>> from mysite.books.models import Publisher