231 lines
16 KiB
Markdown
231 lines
16 KiB
Markdown
## Модель статьи
|
||
1. **ObjectTypeNew**:
|
||
- Представляет типы недвижимости.
|
||
- `object_type` (CharField): Тип недвижимости (выбор из предустановленных значений).
|
||
- `name` (CharField): Название подтипа объекта.
|
||
- Связь с `User` для автора объекта.
|
||
- Имеет поля времени создания и обновления.
|
||
2. **PurposePremises**:
|
||
- Представляет назначение объектов недвижимости.
|
||
- `name` (CharField): Название назначения объекта.
|
||
- Имеет поля времени создания и обновления.
|
||
3. **Room**:
|
||
- Представляет помещение на этаже.
|
||
- `room_number` (CharField): Номер помещения.
|
||
- `plan_number` (CharField): Номер на поэтажном плане.
|
||
- `entrance` (CharField): Тип входа (выбор из предустановленных значений).
|
||
- `area` (DecimalField): Площадь помещения.
|
||
- Связь с изображением помещения.
|
||
- Имеет поля времени создания и обновления.
|
||
4. **Floor**:
|
||
- Представляет этажи в подъезде.
|
||
- `floor_number` (IntegerField): Номер этажа.
|
||
- Связь с изображением плана этажа.
|
||
- Имеет поля времени создания и обновления.
|
||
5. **Entrance**:
|
||
- Представляет подъезды в здании.
|
||
- `entrance_number` (IntegerField): Номер подъезда.
|
||
- Связь с изображением плана подъезда.
|
||
- Имеет поля времени создания и обновления.
|
||
6. **Building**:
|
||
- Представляет здания.
|
||
- `nomber_building` (CharField): Номер дома.
|
||
- `building_name` (CharField): Название здания.
|
||
- `year_built` (YearField): Год постройки здания.
|
||
- Имеет поля времени создания и обновления.
|
||
7. **Territory**:
|
||
- Представляет территории.
|
||
- `district` (CharField): Район.
|
||
- `microdistrict` (CharField): Микрорайон.
|
||
- Имеет поля времени создания и обновления.
|
||
8. **Cluster**:
|
||
- Представляет кластеры.
|
||
- `region` (CharField): Регион.
|
||
- `city` (CharField): Город.
|
||
- Имеет поля времени создания и обновления.
|
||
9. **Object**:
|
||
- Представляет объект недвижимости.
|
||
- `address` (CharField): Адрес объекта.
|
||
- `cadastre_number` (CharField): Кадастровый номер.
|
||
- Связь с типом объекта, назначением объекта, помещениями, этажами, подъездами, зданиями, территориями, и кластерами.
|
||
- Имеет поля времени создания и обновления.
|
||
## Сериализатор
|
||
1. **ObjectTypeNewSerializer**
|
||
- `objectType` (CharField): Строковое представление типа объекта.
|
||
- `nameObjectType` (CharField): Название типа объекта.
|
||
- `author` (AuthorSerializer): Сериализатор для автора объекта.
|
||
- `createdAt` (DateTimeField): Дата и время создания объекта.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления объекта.
|
||
|
||
2. **PurposePremisesSerializer**
|
||
- `namePurposePremises` (CharField): Название назначения помещения.
|
||
- `author` (AuthorSerializer): Сериализатор для автора назначения помещения.
|
||
- `createdAt` (DateTimeField): Дата и время создания назначения помещения.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления назначения помещения.
|
||
|
||
3. **RoomSerializer**
|
||
- `roomNumber` (CharField): Номер помещения.
|
||
- `roomEntrance` (CharField): Вход помещения.
|
||
- `roomArea` (CharField): Площадь помещения.
|
||
- `author` (AuthorSerializer): Сериализатор для автора помещения.
|
||
- `createdAt` (DateTimeField): Дата и время создания помещения.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления помещения.
|
||
|
||
4. **FloorSerializer**
|
||
- `floorNumber` (IntegerField): Номер этажа.
|
||
- `floor_plan_image` (ImagePropirtiesFloorPlanSerializer): Сериализатор для изображений плана этажа.
|
||
- `author` (AuthorSerializer): Сериализатор для автора этажа.
|
||
- `createdAt` (DateTimeField): Дата и время создания этажа.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления этажа.
|
||
|
||
5. **EntranceSerializer**
|
||
- `entranceNumber` (IntegerField): Номер подъезда.
|
||
- `entrancePlanImage` (ImagePropirtiesEntrancePlanSerializer): Сериализатор для изображений плана подъезда.
|
||
- `author` (AuthorSerializer): Сериализатор для автора подъезда.
|
||
- `createdAt` (DateTimeField): Дата и время создания подъезда.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления подъезда.
|
||
|
||
6. **BuildingSerializer**
|
||
- `nombeBuilding` (CharField): Номер здания.
|
||
- `buildingName` (CharField): Название здания.
|
||
- `yearBuilt` (CharField): Год постройки здания.
|
||
- `author` (AuthorSerializer): Сериализатор для автора здания.
|
||
- `createdAt` (DateTimeField): Дата и время создания здания.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления здания.
|
||
|
||
7. **TerritorySerializer**
|
||
- `territoryDistrict` (CharField): Район территории.
|
||
- `territoryMicrodistrict` (CharField): Микрорайон территории.
|
||
- `author` (AuthorSerializer): Сериализатор для автора территории.
|
||
- `createdAt` (DateTimeField): Дата и время создания территории.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления территории.
|
||
|
||
8. **ClusterSerializer**
|
||
- `clusterRegion` (CharField): Регион кластера.
|
||
- `clusterCity` (CharField): Город кластера.
|
||
- `author` (AuthorSerializer): Сериализатор для автора кластера.
|
||
- `createdAt` (DateTimeField): Дата и время создания кластера.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления кластера.
|
||
|
||
9. **ObjectSerializer**
|
||
- `objectAddress` (CharField): Адрес объекта.
|
||
- `cadastreNumber` (CharField): Кадастровый номер объекта.
|
||
- `purposePremises` (CharField): Назначение помещения объекта.
|
||
- `technicalFeatures` (CharField): Технические особенности объекта.
|
||
- `objectFiles` (FileField): Файлы, связанные с объектом.
|
||
- `objectImages` (ImageField): Изображения объекта.
|
||
- `objectVideos` (FileField): Видео, связанные с объектом.
|
||
- `room` (PrimaryKeyRelatedField): Связанные помещения объекта.
|
||
- `floor` (PrimaryKeyRelatedField): Связанные этажи объекта.
|
||
- `entrance` (PrimaryKeyRelatedField): Связанные подъезды объекта.
|
||
- `building` (PrimaryKeyRelatedField): Связанные здания объекта.
|
||
- `territory` (PrimaryKeyRelatedField): Связанные территории объекта.
|
||
- `cluster` (PrimaryKeyRelatedField): Связанные кластеры объекта.
|
||
- `author` (AuthorSerializer): Сериализатор для автора объекта.
|
||
- `createdAt` (DateTimeField): Дата и время создания объекта.
|
||
- `updatedAt` (DateTimeField): Дата и время последнего обновления объекта.
|
||
## Маршрутизатор
|
||
|
||
1. **properties-objecttypenew/** - URL для работы с типами объектов:
|
||
- GET: Получить список всех типов объектов или создать новый тип объекта.
|
||
- POST: Создать новый тип объекта.
|
||
2. **properties-purposepremises/** - URL для работы с назначениями помещений:
|
||
- GET: Получить список всех назначений помещений или создать новое назначение помещения.
|
||
- POST: Создать новое назначение помещения.
|
||
3. **properties-room/** - URL для работы с помещениями:
|
||
- GET: Получить список всех помещений или создать новое помещение.
|
||
- POST: Создать новое помещение.
|
||
4. **properties-floor/** - URL для работы с этажами:
|
||
- GET: Получить список всех этажей или создать новый этаж.
|
||
- POST: Создать новый этаж.
|
||
5. **properties-entrance/** - URL для работы с подъездами:
|
||
- GET: Получить список всех подъездов или создать новый подъезд.
|
||
- POST: Создать новый подъезд.
|
||
6. **properties-building/** - URL для работы со зданиями:
|
||
- GET: Получить список всех зданий или создать новое здание.
|
||
- POST: Создать новое здание.
|
||
7. **properties-territory/** - URL для работы с территориями:
|
||
- GET: Получить список всех территорий или создать новую территорию.
|
||
- POST: Создать новую территорию.
|
||
8. **properties-cluster/** - URL для работы с кластерами:
|
||
- GET: Получить список всех кластеров или создать новый кластер.
|
||
- POST: Создать новый кластер.
|
||
9. **properties-object/** - URL для работы с объектами:
|
||
- GET: Получить список всех объектов или создать новый объект.
|
||
- POST: Создать новый объект.
|
||
|
||
## Контроллер
|
||
|
||
1. **ObjectTypeNewViewSet**:
|
||
- `list`: Получает список всех типов объектов или создает новый тип объекта.
|
||
- `create`: Создает новый тип объекта.
|
||
- `retrieve`: Получает конкретный тип объекта по его идентификатору.
|
||
- `update`: Обновляет данные о типе объекта.
|
||
- `destroy`: Удаляет тип объекта.
|
||
|
||
2. **PurposePremisesViewSet**:
|
||
- `list`: Получает список всех назначений помещений или создает новое назначение помещения.
|
||
- `create`: Создает новое назначение помещения.
|
||
- `retrieve`: Получает конкретное назначение помещения по его идентификатору.
|
||
- `update`: Обновляет данные о назначении помещения.
|
||
- `destroy`: Удаляет назначение помещения.
|
||
|
||
3. **RoomViewSet**:
|
||
- `list`: Получает список всех помещений или создает новое помещение.
|
||
- `create`: Создает новое помещение.
|
||
- `retrieve`: Получает конкретное помещение по его идентификатору.
|
||
- `update`: Обновляет данные о помещении.
|
||
- `destroy`: Удаляет помещение.
|
||
|
||
4. **FloorViewSet**:
|
||
- `list`: Получает список всех этажей или создает новый этаж.
|
||
- `create`: Создает новый этаж.
|
||
- `retrieve`: Получает конкретный этаж по его идентификатору.
|
||
- `update`: Обновляет данные об этаже.
|
||
- `destroy`: Удаляет этаж.
|
||
|
||
5. **EntranceViewSet**:
|
||
- `list`: Получает список всех подъездов или создает новый подъезд.
|
||
- `create`: Создает новый подъезд.
|
||
- `retrieve`: Получает конкретный подъезд по его идентификатору.
|
||
- `update`: Обновляет данные о подъезде.
|
||
- `destroy`: Удаляет подъезд.
|
||
|
||
6. **BuildingViewSet**:
|
||
- `list`: Получает список всех зданий или создает новое здание.
|
||
- `create`: Создает новое здание.
|
||
- `retrieve`: Получает конкретное здание по его идентификатору.
|
||
- `update`: Обновляет данные о здании.
|
||
- `destroy`: Удаляет здание.
|
||
|
||
7. **TerritoryViewSet**:
|
||
- `list`: Получает список всех территорий или создает новую территорию.
|
||
- `create`: Создает новую территорию.
|
||
- `retrieve`: Получает конкретную территорию по ее идентификатору.
|
||
- `update`: Обновляет данные о территории.
|
||
- `destroy`: Удаляет территорию.
|
||
|
||
8. **ClusterViewSet**:
|
||
- `list`: Получает список всех кластеров или создает новый кластер.
|
||
- `create`: Создает новый кластер.
|
||
- `retrieve`: Получает конкретный кластер по его идентификатору.
|
||
- `update`: Обновляет данные о кластере.
|
||
- `destroy`: Удаляет кластер.
|
||
|
||
9. **ObjectViewSet**:
|
||
- `list`: Получает список всех объектов или создает новый объект.
|
||
- `create`: Создает новый объект.
|
||
- `retrieve`: Получает конкретный объект по его идентификатору.
|
||
- `update`: Обновляет данные об объекте.
|
||
- `destroy`: Удаляет объект.
|
||
## Проверка введенных данных
|
||
|
||
1. **validate_year(value)**:
|
||
- Это функция-валидатор, которая принимает значение года в виде строки.
|
||
- Она проверяет, что длина значения равна 4 символам и что значение состоит только из цифр.
|
||
- Если условия не соблюдаются, функция поднимает исключение ValidationError с соответствующим сообщением об ошибке.
|
||
|
||
2. **YearField(models.CharField)**:
|
||
- Это класс, который определяет поле модели Django для хранения года.
|
||
- Он наследуется от CharField и добавляет к нему функциональность валидации года.
|
||
- В конструкторе класса YearField устанавливаются максимальная длина поля в 4 символа и добавляется список валидаторов, включая validate_year. |