Files
octopus/myproject/integrations/models/category_mappings.py
Andrey Smakotin 1fb280607a feat(integrations): добавить поле primary_category и маппинг категорий для интеграций
Добавлена поддержка выбора основной категории (primary_category) для товаров и наборов, а также новая модель IntegrationCategoryMapping для связи категорий с внешними площадками. Теперь можно указать категорию товара, которая будет использоваться при экспорте на внешние площадки (Recommerce, WooCommerce и др.), с возможностью настройки маппинга категорий для каждого типа интеграции.
2026-01-14 01:53:38 +03:00

66 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Модели для маппинга категорий на внешние площадки.
"""
from django.db import models
class IntegrationCategoryMapping(models.Model):
"""
Маппинг внутренней категории на внешнюю категорию маркетплейса.
Позволяет связать категории товаров с их аналогами на внешних площадках
(Recommerce, WooCommerce и др.).
"""
INTEGRATION_CHOICES = [
('recommerce', 'Recommerce'),
('woocommerce', 'WooCommerce'),
]
category = models.ForeignKey(
'products.ProductCategory',
on_delete=models.CASCADE,
related_name='integration_mappings',
verbose_name="Категория"
)
integration_type = models.CharField(
max_length=20,
choices=INTEGRATION_CHOICES,
verbose_name="Интеграция",
db_index=True
)
external_category_sku = models.CharField(
max_length=100,
verbose_name="Артикул категории во внешней системе",
help_text="SKU или ID категории на внешней площадке"
)
external_category_name = models.CharField(
max_length=200,
blank=True,
verbose_name="Название категории во внешней системе",
help_text="Для справки, не обязательно"
)
created_at = models.DateTimeField(
auto_now_add=True,
verbose_name="Создано"
)
updated_at = models.DateTimeField(
auto_now=True,
verbose_name="Обновлено"
)
class Meta:
verbose_name = "Маппинг категории"
verbose_name_plural = "Маппинги категорий"
unique_together = [['category', 'integration_type']]
indexes = [
models.Index(fields=['integration_type', 'external_category_sku']),
]
def __str__(self):
return f"{self.category.name}{self.get_integration_type_display()}:{self.external_category_sku}"