Skip to content

Commit

Permalink
[ru] replace old noteblock syntax with GFM syntax in `learn/server-si…
Browse files Browse the repository at this point in the history
…de` folder (#22772)

[ru] replace old noteblock syntax with GFM syntax in 'learn/server-side' folder
  • Loading branch information
leon-win authored Aug 6, 2024
1 parent 6cb75d4 commit 89dbf16
Show file tree
Hide file tree
Showing 34 changed files with 408 additions and 207 deletions.
21 changes: 14 additions & 7 deletions files/ru/learn/server-side/django/admin_site/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ admin.site.register(Genre)
admin.site.register(BookInstance)
```

> **Примечание:** Если вы приняли участие в создании модели для представления естественного языка книги ([см. обучающую статью о моделях](/ru/docs/Learn/Server-side/Django/Models)), импортируйте и зарегистрируйте её тоже!
> [!NOTE]
> В строках выше предполагается, что вы приняли вызов создать модель, отражающую естественный язык книги ([см. обучающую статью о моделях](/ru/docs/Learn/Server-side/Django/Models))!
Это самый простой способ регистрации модели или моделей. Админ-панель имеет множество настроек. Мы рассмотрим другие способы регистрации ваших моделей ниже.

Expand Down Expand Up @@ -74,7 +75,8 @@ python3 manage.py runserver

![Admin Site - Book Add](admin_book_add.png)

> **Примечание:** А сейчас, хотелось бы, чтобы вы добавили несколько книг, авторов и жанров (например, Фэнтези) в ваше приложение. Удостоверьтесь, что каждый автор и жанр включает пару различных книг (позже, когда мы реализуем представления "list" и "detail", это сделает их более интересными).
> [!NOTE]
> А сейчас, хотелось бы, чтобы вы добавили несколько книг, авторов и жанров (например, Фэнтези) в ваше приложение. Удостоверьтесь, что каждый автор и жанр включает пару различных книг (позже, когда мы реализуем представления "list" и "detail", это сделает их более интересными).
После того, когда книги добавлены, для перехода на главную страницу админ-панели кликните на ссылке **Home** в верхней части страницы. Потом кликните на ссылке **Books** для отображения текущего списка книг (или на одной из других ссылок, чтобы увидеть список соответствующей модели). После добавления нескольких книг список может выглядеть наподобие скриншота ниже. Отображается название каждой из книг. Его возвращает метод `__str__()` в модели Book, созданной в предыдущей статье.

Expand Down Expand Up @@ -190,7 +192,8 @@ class BookAdmin(admin.ModelAdmin):

К сожалению, мы не можем напрямую поместить поле genre в `list_display`, так как оно является `ManyToManyField` (Django не позволяет это из-за большой "стоимости" доступа к базе данных). Вместо этого мы определим функцию `display_genre` для получения строкового представления информации (вызов этой функции есть в `list_display`, её определение см. ниже).

> **Примечание:** Получение здесь значения поля `genre` возможно не самая хорошая идея вследствие "стоимости" операции базы данных. Мы показываем это, потому что вызов функций в ваших моделях может быть очень полезен по другим причинам, например, для добавления ссылки _Delete_ рядом с каждым пунктом списка.
> [!NOTE]
> Получение здесь значения поля `genre` возможно не самая хорошая идея вследствие "стоимости" операции базы данных. Мы показываем это, потому что вызов функций в ваших моделях может быть очень полезен по другим причинам, например, для добавления ссылки _Delete_ рядом с каждым пунктом списка.
Добавьте следующий код в вашу модель `Book` (**models.py**). В нем создаётся строка из первых трёх значений поля `genre` (если они существуют) и `short_description`, которое может быть использовано в админ-панели.

Expand All @@ -209,7 +212,8 @@ class BookAdmin(admin.ModelAdmin):

Модель `Genre` (и модель `Language`, если вы её определили) имеет единственное поле. Поэтому нет необходимости создания для них дополнительных моделей с целью отображения дополнительных полей.

> **Примечание:** целесообразно, чтобы в списке модели `BookInstance` отображались хотя бы статус и ожидаемая дата возврата. Мы добавили это в качестве "испытания" в конце этой статьи!
> [!NOTE]
> Целесообразно, чтобы в списке модели `BookInstance` отображались хотя бы статус и ожидаемая дата возврата. Мы добавили это в качестве "испытания" в конце этой статьи!
### Добавление фильтров списка

Expand All @@ -228,7 +232,8 @@ class BookInstanceAdmin(admin.ModelAdmin):

По умолчанию в представлениях деталей отображаются все поля по вертикали в порядке их объявления в модели. Вы можете изменить порядок декларации, какие поля отображаются (или исключены), используются ли разделы для организации информации, отображаются ли поля горизонтально или вертикально, и даже какие виджеты редактирования используются в админ-формах.

> **Примечание:** Модели LocalLibrary относительно просты, поэтому нам не нужно менять макет, но мы всё равно внесём некоторые изменения, просто чтобы показать вам, как это сделать.
> [!NOTE]
> Модели LocalLibrary относительно просты, поэтому нам не нужно менять макет, но мы всё равно внесём некоторые изменения, просто чтобы показать вам, как это сделать.
#### Управление отображаемыми и вложенными полями

Expand All @@ -246,7 +251,8 @@ class AuthorAdmin(admin.ModelAdmin):

![Admin Site - Improved Author Detail](admin_improved_author_detail.png)

> **Примечание:** Так же, вы можете использовать `exclude` атрибут для объявления списка атрибутов, которые будут исключены из формы (все остальные атрибуты в модели, будут отображаться).
> [!NOTE]
> Так же, вы можете использовать `exclude` атрибут для объявления списка атрибутов, которые будут исключены из формы (все остальные атрибуты в модели, будут отображаться).
#### Разделение на секции/Выделение подробного представления

Expand Down Expand Up @@ -297,7 +303,8 @@ class BookAdmin(admin.ModelAdmin):

В этом случае, всё, что мы сделали - объявили наш встроенный класс tablular, который просто добавляет все поля из _встроенной_ модели. Вы можете указать все виды дополнительной информации для макета, включая отображаемые поля, их порядок, независимо от того, являются ли они только для чтения или нет, и т. д. (См. [TabularInline](https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.TabularInline) для получения дополнительной информации).

> **Примечание:** В этой функции есть некоторые неприятные ограничения! На скриншоте выше у нас есть три существующих экземпляра книги, за которыми следуют три поля для новых экземпляров книги (которые очень похожи!). Было бы лучше НЕ иметь лишних экземпляров книг по умолчанию и просто добавить их с помощью ссылки **Add another Book instance** или иметь возможность просто перечислять `BookInstance`s как нечитаемые здесь ссылки. Первый вариант можно сделать, установив `extra` атрибут в 0 в модели `BookInstanceInline`, попробуйте сами.
> [!NOTE]
> В этой функции есть некоторые неприятные ограничения! На скриншоте выше у нас есть три существующих экземпляра книги, за которыми следуют три поля для новых экземпляров книги (которые очень похожи!). Было бы лучше НЕ иметь лишних экземпляров книг по умолчанию и просто добавить их с помощью ссылки **Add another Book instance** или иметь возможность просто перечислять `BookInstance`s как нечитаемые здесь ссылки. Первый вариант можно сделать, установив `extra` атрибут в 0 в модели `BookInstanceInline`, попробуйте сами.
## Проверьте себя

Expand Down
Loading

0 comments on commit 89dbf16

Please sign in to comment.