Found misprint?

Select it with the mouse and hit Enter

Ctrl-Enter
Обработано:
86 1 199 25
на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!

ЯМ:41001223475816

Редактор ресурсов Gettext для Android
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
Мы рады получить ваши вопросы, комментарии или предложения!
(Open in new tab)
Количество пользователей: 1135
Русская группа
на Google

Документация Django на русском

Документация на русском языке для 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 для работы с базой данных, но сначала давайте позаботимся о небольших неудобствах.

djoa
djoa 2 недели, 3 дня прошло
Ответить | Ссылка

В 1.4.3 корректно работает "from books.models import Publisher".

equilibrium05
equilibrium05 4 месяца прошло
Ответить | Ссылка

+1 sva,
alerion если против, то пожалуйста попробуйте сами, С теми командами которые указаны в этой главе, этого руководства.

Xorder
Xorder 6 месяцев, 3 недели прошло
Ответить | Ссылка

Согласен с sva, без названия проекта шелл выводит ошибку.

alerion
alerion 9 месяцев, 2 недели прошло
Ответить | Ссылка

ответить sva
в версии 1.4 вместо
>>> from books.models import Publisher
нужно писать
>>> from mysite.books.models import Publisher

Это вы почему так решили? Книга описывает старую структуру проекта, в которой название проекта можно не включать(что очень рекомендуется). Да и в 1.4 не обязательно, если приложение находится в корне проекта.

sva
sva 9 месяцев, 2 недели прошло
Ответить | Ссылка

в версии 1.4 вместо
>>> from books.models import Publisher
нужно писать
>>> from mysite.books.models import Publisher