Модель данных
Справочник по всем моделям базы данных (словарь данных). Источник —
models.py приложений catalog, leads, pages, core.
В колонке Поле — имя в коде/БД. Поля с blank могут быть пустыми в форме;
поля с null могут быть NULL в БД.
Схема связей
erDiagram
Category ||--o{ Product : has
Product ||--o{ ProductSpec : has
Product ||--o{ ProductImage : has
Product ||--o{ Lead : has
Category {
string name
slug slug
int order
bool is_active
}
Product {
int category FK
string name
slug slug
string badge
bool is_active
}
ProductSpec {
int product FK
string label
string value
}
ProductImage {
int product FK
string alt
}
Lead {
string name
string phone
string email
string type
string status
bool consent
int product FK
}
SiteSettings, AmoCRMAuth, Certificate и Page ни с чем не связаны
(одиночки и независимые галереи) — на схеме не показаны.
Каталог (apps.catalog)
Category — категория каталога
| Поле | Тип | Пусто? | Описание |
|---|---|---|---|
name |
CharField(200) | нет | Название. |
slug |
SlugField | нет, уникальный | Часть URL. |
image |
ImageField | blank | Картинка раздела (categories/). |
order |
PositiveInteger | default 0 | Порядок сортировки. |
is_active |
Boolean | default True | Показывать на сайте. |
Сортировка по умолчанию: order, затем name.
Product — товар
| Поле | Тип | Пусто? | Описание |
|---|---|---|---|
category |
FK → Category | нет | Категория. При удалении категории — PROTECT (нельзя удалить, пока есть товары). |
name |
CharField(200) | нет | Название. |
slug |
SlugField | нет, уникальный | Часть URL. |
badge |
CharField(50) | blank | Метка-ярлык на фото («Евроканистра»). |
description |
TextField | blank | Описание. |
image |
ImageField | blank | Главное фото (products/). |
is_active |
Boolean | default True | Показывать на сайте. |
order |
PositiveInteger | default 0 | Порядок. |
meta_title |
CharField(200) | blank | SEO-заголовок. |
meta_description |
CharField(300) | blank | SEO-описание. |
ProductSpec — характеристика товара
Пары «параметр → значение». Набор у разных товаров разный (поэтому свободные поля, а не фиксированные колонки).
| Поле | Тип | Пусто? | Описание |
|---|---|---|---|
product |
FK → Product | нет | Товар. При удалении товара — CASCADE. |
label |
CharField(100) | нет | Параметр («Объём»). |
value |
CharField(200) | нет | Значение («20»). |
unit |
CharField(50) | blank | Единица («л»). |
order |
PositiveInteger | default 0 | Порядок. |
ProductImage — фото товара
| Поле | Тип | Пусто? | Описание |
|---|---|---|---|
product |
FK → Product | нет | Товар. CASCADE. |
image |
ImageField | нет | Файл (products/). |
alt |
CharField(200) | blank | Подпись/ракурс. Используется как alt и подпись миниатюры. |
order |
PositiveInteger | default 0 | Порядок в галерее. |
Заявки (apps.leads)
Lead — заявка с сайта
| Поле | Тип | Пусто? | Описание |
|---|---|---|---|
name |
CharField(200) | нет | Имя. |
phone |
CharField(20) | нет | Телефон. |
email |
EmailField | blank | E-mail. |
comment |
TextField | blank | Комментарий. |
type |
CharField, choices | default order |
Тип: callback (звонок) / order (заказ). |
status |
CharField, choices | default new |
Статус: new / processed. |
consent |
Boolean | нет | Факт согласия на обработку ПДн. |
created_at |
DateTime | auto | Дата создания (ставится автоматически). |
product |
FK → Product | null, blank | Товар, по которому заявка. При удалении товара — SET_NULL. |
Сортировка по умолчанию: created_at по убыванию (новые сверху).
Метод as_message() форматирует заявку в текст для уведомлений.
AmoCRMAuth — токены amoCRM (одиночка)
Хранит OAuth-токены интеграции. Единственная запись.
| Поле | Тип | Описание |
|---|---|---|
access_token |
TextField | Токен доступа. |
refresh_token |
TextField | Токен обновления. |
expires_at |
DateTime | Срок действия access-токена. |
Токены создаются командой amocrm_auth и обновляются автоматически. В админке
доступны только для чтения.
Страницы (apps.pages)
Certificate — сертификат
Независимая галерея картинок на странице «О компании».
| Поле | Тип | Пусто? | Описание |
|---|---|---|---|
title |
CharField(200) | нет | Название. |
image |
ImageField | нет | Скан/фото (certificates/). |
order |
PositiveInteger | default 0 | Порядок. |
is_active |
Boolean | default True | Показывать. |
Настройки сайта (apps.core)
SiteSettings — настройки сайта (одиночка)
Единственная запись, правится в админке. Контакты, реквизиты и параметры
уведомлений. Полное описание каждого поля — в его help_text в админке.
Контакты: company_name, phone_sales, phone_sales_person,
email_sales, phone_production, phone_production_person,
phone_accounting, email_accounting.
Адрес и режим: address, work_hours, work_hours_weekend, map_query.
Реквизиты: legal_address, inn, kpp, ogrn, okpo, account,
bank, bik, corr_account.
Уведомления и аналитика: metrika_id, notify_email_enabled,
email_notifications, notify_telegram_enabled, telegram_chat_id,
notify_amocrm_enabled.
Телефоны: одно поле — два применения
Телефон хранится в одном поле в виде для показа (+7 495 000-00-00).
Кликабельная ссылка tel: вычисляется автоматически свойствами
phone_*_tel — отдельно её хранить не нужно, display и href не разойдутся.
Зачем отдельные email_sales и email_notifications — см.
Каналы уведомлений.