mod: модели (preliminary 03)
This commit is contained in:
@@ -774,8 +774,8 @@ class TbSeller(models.Model):
|
|||||||
SELLER = 'seller', 'Продавец'
|
SELLER = 'seller', 'Продавец'
|
||||||
LABEL = 'label', 'Лейбл (издатель)'
|
LABEL = 'label', 'Лейбл (издатель)'
|
||||||
DIY = 'diy', 'Самиздат группы'
|
DIY = 'diy', 'Самиздат группы'
|
||||||
CROWD = 'crowdfunding', 'Краудфандинг'
|
CROWD = 'crowd', 'Краудфандинг'
|
||||||
OTHER = '++', 'Другое'
|
OTHER = '???', 'Другое'
|
||||||
|
|
||||||
# Используем SmallAutoField для оптимизации (макс ~32k)
|
# Используем SmallAutoField для оптимизации (макс ~32k)
|
||||||
# Продавцов обычно до 1000-10000, поэтому достаточно
|
# Продавцов обычно до 1000-10000, поэтому достаточно
|
||||||
@@ -802,7 +802,7 @@ class TbSeller(models.Model):
|
|||||||
'<b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL продавца.'
|
'<b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL продавца.'
|
||||||
)
|
)
|
||||||
l_seller_type = models.CharField(
|
l_seller_type = models.CharField(
|
||||||
max_length=9,
|
max_length=6,
|
||||||
default=SellerType.SELLER,
|
default=SellerType.SELLER,
|
||||||
choices=SellerType.choices,
|
choices=SellerType.choices,
|
||||||
verbose_name='Тип продавца',
|
verbose_name='Тип продавца',
|
||||||
@@ -877,7 +877,7 @@ class TbOffer(models.Model):
|
|||||||
G = 'g', 'Good (хорошее)'
|
G = 'g', 'Good (хорошее)'
|
||||||
F = 'f', 'Fair (удовлетворительное)'
|
F = 'f', 'Fair (удовлетворительное)'
|
||||||
P = 'p', 'Poor (плохое)'
|
P = 'p', 'Poor (плохое)'
|
||||||
OTHER = '++', 'Other'
|
OTHER = '??', 'Other'
|
||||||
|
|
||||||
s_offer = models.CharField(
|
s_offer = models.CharField(
|
||||||
max_length=128,
|
max_length=128,
|
||||||
@@ -1064,11 +1064,8 @@ class TbOffer(models.Model):
|
|||||||
# Составной индекс: найти актуальные офферы по товару (есть в наличии)
|
# Составной индекс: найти актуальные офферы по товару (есть в наличии)
|
||||||
models.Index(fields=['k_offer_to_item', 'i_offer_quantity'], name='idx_offer_by_item_qty'),
|
models.Index(fields=['k_offer_to_item', 'i_offer_quantity'], name='idx_offer_by_item_qty'),
|
||||||
]
|
]
|
||||||
constraints = [
|
# ПРИМЕЧАНИЕ: UniqueConstraint на (item, source, format) удален, т.к. k_offer_to_format теперь M2M.
|
||||||
# Уникальное ограничение: предотвратить дубликаты (один товар + один источник + один формат)
|
# M2M не поддерживают участие в constraints. Уникальность на уровне БД не требуется.
|
||||||
models.UniqueConstraint(fields=['k_offer_to_item', 'k_offer_to_source', 'l_offer_primary_media'],
|
|
||||||
name='idx_offer_unique_item_source_format'),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
@@ -1084,7 +1081,7 @@ class TbSource(models.Model):
|
|||||||
EXCEL = 'excel', 'Excel-файл от продавца или издателя'
|
EXCEL = 'excel', 'Excel-файл от продавца или издателя'
|
||||||
CSV = 'csv', 'CSV-файл от продавца или издателя'
|
CSV = 'csv', 'CSV-файл от продавца или издателя'
|
||||||
URL = 'url', 'URL страницы с данными (например, HTML-страница с каталогом товаров)'
|
URL = 'url', 'URL страницы с данными (например, HTML-страница с каталогом товаров)'
|
||||||
OTHER = '++', 'Другое'
|
OTHER = '??', 'Другое'
|
||||||
|
|
||||||
class Currency(models.TextChoices):
|
class Currency(models.TextChoices):
|
||||||
RUB = 'rub', 'RUB: российский рубль'
|
RUB = 'rub', 'RUB: российский рубль'
|
||||||
@@ -1097,7 +1094,7 @@ class TbSource(models.Model):
|
|||||||
CNY = 'cny', 'CNY: китайский юань'
|
CNY = 'cny', 'CNY: китайский юань'
|
||||||
BYN = 'byn', 'BYN: белорусский рубль'
|
BYN = 'byn', 'BYN: белорусский рубль'
|
||||||
TON = 'ton', 'TON: криптовалюта TON'
|
TON = 'ton', 'TON: криптовалюта TON'
|
||||||
OTHER = '++', 'Other'
|
OTHER = '??', 'Other'
|
||||||
|
|
||||||
# Используем SmallAutoField для оптимизации (макс ~32k)
|
# Используем SmallAutoField для оптимизации (макс ~32k)
|
||||||
# Источников обычно до 1000, достаточно
|
# Источников обычно до 1000, достаточно
|
||||||
|
|||||||
Reference in New Issue
Block a user