96 lines
6.2 KiB
Markdown
96 lines
6.2 KiB
Markdown
## Модели
|
||
|
||
1. **Comment**:
|
||
- **`author`** (ForeignKey): Связывает поле с моделью пользователя, который создал комментарий.
|
||
- **`content`** (TextField): Текст комментария.
|
||
- **`created`** (DateTimeField): Дата и время создания комментария (автоматически добавляется).
|
||
- **`updated`** (DateTimeField): Дата и время последнего обновления комментария (автоматически).
|
||
|
||
2. **CommentArticles**:
|
||
- **`article`** (ForeignKey): Связь с моделью статьи (Article).
|
||
|
||
1. **CommentTodos**:
|
||
- **`todo`** (ForeignKey): Связь с моделью задачи (Todo).
|
||
|
||
1. **CommentTenant**:
|
||
- **`tenant`** (ForeignKey): Связь с моделью арендатора (Tenant).
|
||
|
||
1. **CommentGoods**:
|
||
- `**goods**` (ForeignKey): Связь с моделью имущества (Goods).
|
||
|
||
1. **CommentPropertyObject**:
|
||
- **`object`** (ForeignKey): Связь с моделью объекта (Object).
|
||
|
||
1. **CommentMaintenanceHistories**:
|
||
- `**maintenancehistory**` (ForeignKey): Связь с моделью истории обслуживания (MaintenanceHistory).
|
||
|
||
1. **CommentContract**:
|
||
- **`contract`** (ForeignKey): Связь с моделью контракта (Contract).
|
||
## Сериализатор
|
||
|
||
1. **CommentSerializer:**
|
||
- **`author`:** SerializerMethodField, который вызывает метод `get_author` для получения сериализованных данных об авторе комментария.
|
||
- **`createdAt`:** DateTimeField с форматированием даты и времени в ISO 8601.
|
||
- `**updatedAt`:** DateTimeField с форматированием даты и времени в ISO 8601.
|
||
- **`body`:** CharField, который использует поле content модели Comment.
|
||
- **Методы:**
|
||
- **`get_author`:** Получает сериализованные данные об авторе комментария.
|
||
- **`create`:** Создает новый комментарий с указанными данными, включая автора и связанный объект (article).
|
||
|
||
2. **CommentTodosSerializer:**
|
||
- `**author`:** SerializerMethodField, который вызывает метод `get_author` для получения сериализованных данных об авторе комментария.
|
||
- **`createdAt`:** DateTimeField с форматированием даты и времени в ISO 8601.
|
||
- **`updatedAt`:** DateTimeField с форматированием даты и времени в ISO 8601.
|
||
- **`body`:** CharField, который использует поле content модели CommentTodos.
|
||
- **Методы:**
|
||
- **`get_author`:** Получает сериализованные данные об авторе комментария.
|
||
- `**create`:** Создает новый комментарий для задачи с указанными данными, включая автора и связанную задачу (todo).
|
||
## Маршрутизатор
|
||
|
||
1. **comment-article:** URL для создания и получения комментариев к статьям.
|
||
- `articles/<str:slug>/comments`
|
||
- `views.CommentView.as_view()`
|
||
- `name='comment-article'`
|
||
|
||
1. **comment-delete:** URL для удаления комментариев к статьям по их идентификатору.
|
||
- `articles/<str:slug>/comments/<int:id>`
|
||
- `views.DeleteCommentView.as_view()`
|
||
- `name='comment-delete'`
|
||
|
||
1. **comment-todo-article:** URL для создания и получения комментариев к задачам.
|
||
- `todos/<int:id>/comments`
|
||
- `views.CommentTodoView.as_view()`
|
||
- `name='comment-todo-article'`
|
||
|
||
1. **comment-todo-delete:** URL для удаления комментариев к задачам по их идентификатору.
|
||
- `todos/<int:todo_id>/comments/<int:comment_id>/`
|
||
- `views.DeleteCommentTodoView.as_view()`
|
||
- `name='comment-todo-delete'`
|
||
## Контроллер
|
||
|
||
1. **CommentView:**
|
||
- Это представление позволяет создавать и получать комментарии к статьям.
|
||
- `generics.ListCreateAPIView`: Для списка и создания комментариев.
|
||
- `get_permissions`: Проверка прав доступа.
|
||
- `post`: Создание комментария.
|
||
- `list`: Получение списка комментариев.
|
||
- `DestroyAPIView` не используется здесь, поэтому удаление комментариев не поддерживается.
|
||
|
||
2. **DeleteCommentView:**
|
||
- Это представление предназначено для удаления комментариев к статьям.
|
||
- `generics.DestroyAPIView`: Для удаления комментариев.
|
||
- `destroy`: Удаление комментария по его идентификатору и слагу статьи.
|
||
|
||
3. **CommentTodoView:**
|
||
- Это представление позволяет создавать и получать комментарии к задачам.
|
||
- `generics.ListCreateAPIView`: Для списка и создания комментариев.
|
||
- `get_permissions`: Проверка прав доступа.
|
||
- `post`: Создание комментария.
|
||
- `list`: Получение списка комментариев.
|
||
- `DestroyAPIView` не используется здесь, поэтому удаление комментариев не поддерживается.
|
||
|
||
4. **DeleteCommentTodoView:**
|
||
- Это представление предназначено для удаления комментариев к задачам.
|
||
- `generics.DestroyAPIView`: Для удаления комментариев.
|
||
- `destroy`: Удаление комментария по его идентификатору и идентификатору задачи.
|