fin: модели (18) полные комментарии с подробным описанием полей и механики цепочки методов, когда save одной модели создает или изменяет записи в других моделях...
This commit is contained in:
@@ -235,6 +235,9 @@ class TbImageMetadata(models.Model):
|
|||||||
• offer.m_image.all() — все картинки оффера
|
• offer.m_image.all() — все картинки оффера
|
||||||
• offer.m_image.all().order_by('i_img_sort') — отсортированные картинки
|
• offer.m_image.all().order_by('i_img_sort') — отсортированные картинки
|
||||||
• image.metadata (через related_name) — доступ к метаданным
|
• image.metadata (через related_name) — доступ к метаданным
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• Нет переопределённых методов save(). Используется стандартное поведение Django.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
image = FilerImageField(
|
image = FilerImageField(
|
||||||
@@ -582,6 +585,11 @@ class TbMusicStyle(models.Model):
|
|||||||
Связи:
|
Связи:
|
||||||
• M2M←TbArticle.k_article_to_styles: теги стилей к статьям
|
• M2M←TbArticle.k_article_to_styles: теги стилей к статьям
|
||||||
• M2M←TbItem.k_item_to_style: жанры альбомов
|
• M2M←TbItem.k_item_to_style: жанры альбомов
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• save(): управляет синонимами и создаёт связанную статью автоматически
|
||||||
|
- При создании/изменении: добавляет название стиля в SYN_EN метаданные
|
||||||
|
- Если статья не привязана: создаёт новую через create_or_get_related_article()
|
||||||
"""
|
"""
|
||||||
# Используем SmallAutoField для оптимизации (макс ~32k)
|
# Используем SmallAutoField для оптимизации (макс ~32k)
|
||||||
# Стилей обычно 100-1000, поэтому 2 байта достаточно
|
# Стилей обычно 100-1000, поэтому 2 байта достаточно
|
||||||
@@ -676,6 +684,11 @@ class TbArtist(models.Model):
|
|||||||
|
|
||||||
Связи:
|
Связи:
|
||||||
• M2M←TbItem.k_item_to_artist: коллаборации (артист может быть на нескольких альбомах)
|
• M2M←TbItem.k_item_to_artist: коллаборации (артист может быть на нескольких альбомах)
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• save(): управляет синонимами и создаёт связанную статью автоматически
|
||||||
|
- При создании/изменении: добавляет названия артиста в SYN_EN метаданные
|
||||||
|
- Если статья не привязана: создаёт новую через create_or_get_related_article()
|
||||||
"""
|
"""
|
||||||
# Используем SmallAutoField для оптимизации (макс ~32k)
|
# Используем SmallAutoField для оптимизации (макс ~32k)
|
||||||
# Артистов в базе может быть несколько тысяч, достаточно
|
# Артистов в базе может быть несколько тысяч, достаточно
|
||||||
@@ -776,6 +789,11 @@ class TbItem(models.Model):
|
|||||||
• Один товар может быть в нескольких TbOffer от разных продавцов
|
• Один товар может быть в нескольких TbOffer от разных продавцов
|
||||||
• M2M с TbArtist для поддержки коллабораций
|
• M2M с TbArtist для поддержки коллабораций
|
||||||
• M2M с TbMusicStyle для жанров
|
• M2M с TbMusicStyle для жанров
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• save(): управляет синонимами и создаёт связанную статью автоматически
|
||||||
|
- При создании/изменении: добавляет названия товара в SYN_EN метаданные
|
||||||
|
- Если статья не привязана: создаёт новую через create_or_get_related_article()
|
||||||
"""
|
"""
|
||||||
s_item = models.CharField(
|
s_item = models.CharField(
|
||||||
max_length=128,
|
max_length=128,
|
||||||
@@ -913,6 +931,11 @@ class TbLabel(models.Model):
|
|||||||
|
|
||||||
Связи:
|
Связи:
|
||||||
• 1:M←TbOffer.k_offer_to_label: предложения от этого лейбла
|
• 1:M←TbOffer.k_offer_to_label: предложения от этого лейбла
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• save(): управляет синонимами и создаёт связанную статью автоматически
|
||||||
|
- При создании/изменении: добавляет названия лейбла в SYN_EN метаданные
|
||||||
|
- Если статья не привязана: создаёт новую через create_or_get_related_article()
|
||||||
"""
|
"""
|
||||||
# Используем SmallAutoField для оптимизации (макс ~32k)
|
# Используем SmallAutoField для оптимизации (макс ~32k)
|
||||||
# Лейблов обычно несколько сотен-тысяч, достаточно
|
# Лейблов обычно несколько сотен-тысяч, достаточно
|
||||||
@@ -1016,6 +1039,10 @@ class TbSeller(models.Model):
|
|||||||
Связи:
|
Связи:
|
||||||
• 1:M→TbSource.k_source_to_seller: источники данных от этого продавца
|
• 1:M→TbSource.k_source_to_seller: источники данных от этого продавца
|
||||||
• 1:M→TbOffer (через TbSource): предложения товаров
|
• 1:M→TbOffer (через TbSource): предложения товаров
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• save(): создаёт связанную статью автоматически (синонимы не используются)
|
||||||
|
- Если статья не привязана: создаёт новую через create_or_get_related_article()
|
||||||
"""
|
"""
|
||||||
class SellerType(models.TextChoices):
|
class SellerType(models.TextChoices):
|
||||||
SELLER = 'seller', 'Продавец'
|
SELLER = 'seller', 'Продавец'
|
||||||
@@ -1467,6 +1494,9 @@ class TbSource(models.Model):
|
|||||||
|
|
||||||
Связи:
|
Связи:
|
||||||
• 1:M→TbOffer.k_offer_to_source: офферы из этого источника
|
• 1:M→TbOffer.k_offer_to_source: офферы из этого источника
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• Нет переопределённых методов save(). Используется стандартное поведение Django.
|
||||||
"""
|
"""
|
||||||
class SourceType(models.TextChoices):
|
class SourceType(models.TextChoices):
|
||||||
EXCEL = 'excel', 'Excel-файл от продавца или издателя'
|
EXCEL = 'excel', 'Excel-файл от продавца или издателя'
|
||||||
@@ -1570,6 +1600,9 @@ class TbOfferHistory(models.Model):
|
|||||||
- Поле t_history_created можно редактировать (editable=True)
|
- Поле t_history_created можно редактировать (editable=True)
|
||||||
- Используется для импорта исторических данных из Excel-файлов и других источников
|
- Используется для импорта исторических данных из Excel-файлов и других источников
|
||||||
- Позволяет восстановить временную линию цены/наличия для аналитики
|
- Позволяет восстановить временную линию цены/наличия для аналитики
|
||||||
|
|
||||||
|
МЕТОДЫ:
|
||||||
|
• save(): вызывается автоматически из TbOffer.save() с параметрами цены/количества
|
||||||
"""
|
"""
|
||||||
k_history_to_offer = models.ForeignKey(
|
k_history_to_offer = models.ForeignKey(
|
||||||
TbOffer,
|
TbOffer,
|
||||||
|
|||||||
Reference in New Issue
Block a user