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).
|
||
|
||
3. **CommentTodos**:
|
||
- **`todo`**(ForeignKey): Связь с моделью задачи (Todo).
|
||
|
||
4. **CommentTenant**:
|
||
- **`tenant`**(ForeignKey): Связь с моделью арендатора (Tenant).
|
||
|
||
5. **CommentGoods**:
|
||
- `**goods**`(ForeignKey): Связь с моделью имущества (Goods).
|
||
|
||
6. **CommentPropertyObject**:
|
||
- **`object`**(ForeignKey): Связь с моделью объекта (Object).
|
||
|
||
7. **CommentMaintenanceHistories**:
|
||
- `**maintenancehistory**`(ForeignKey): Связь с моделью истории обслуживания (MaintenanceHistory).
|
||
|
||
8. **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`: Удаление комментария по его идентификатору и идентификатору задачи.
|