add: модели (draft 05)
This commit is contained in:
@@ -42,7 +42,7 @@ class TbArtist(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"product {self.id:0>4}: {self.s_artist}"
|
return f"artist {self.id:0>4}: {self.s_artist}"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Исполнитель'
|
verbose_name = 'Исполнитель'
|
||||||
@@ -132,7 +132,7 @@ class TbProduct(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"[{self.id:0>4}] {self.s_title}"
|
return f"Product {self.id:0>4}: {self.s_title}"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Релиз (товар)'
|
verbose_name = 'Релиз (товар)'
|
||||||
@@ -187,7 +187,7 @@ class TbLabel(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.s_label
|
return f"label: {self.id:0>5}: {self.s_label}"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Лейбл'
|
verbose_name = 'Лейбл'
|
||||||
@@ -242,7 +242,7 @@ class TbSeller(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.s_seller
|
return f"seller: {self.id:0>2}: {self.s_seller}"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Продавец'
|
verbose_name = 'Продавец'
|
||||||
@@ -380,7 +380,7 @@ class TbOffer(models.Model):
|
|||||||
verbose_name="Валюта",
|
verbose_name="Валюта",
|
||||||
)
|
)
|
||||||
|
|
||||||
i_quantity = models.IntegerField(
|
i_offer_quantity = models.IntegerField(
|
||||||
# Устанавливая количество в ноль, можно указать, что предложение в настоящее время не доступно.
|
# Устанавливая количество в ноль, можно указать, что предложение в настоящее время не доступно.
|
||||||
blank=True,
|
blank=True,
|
||||||
default=0,
|
default=0,
|
||||||
@@ -419,7 +419,8 @@ class TbOffer(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"offer {self.id:0>4} for product {self.k_product_id} from seller {self.k_seller_id}"
|
return f"offer {self.id:0>4} for product {self.k_product_id} from seller {self.k_source.k_seller_id}"
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# ИСТОЧНИКИ ДАННЫХ
|
# ИСТОЧНИКИ ДАННЫХ
|
||||||
@@ -495,7 +496,7 @@ class TbSource(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"source {self.id:0>4}: {self.s_source_name}"
|
return f"source {self.id:0>3}: {self.s_source_name}"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Источник данных'
|
verbose_name = 'Источник данных'
|
||||||
@@ -528,7 +529,6 @@ class TbOfferHistory(models.Model):
|
|||||||
default=0.00,
|
default=0.00,
|
||||||
verbose_name='Старая цена',
|
verbose_name='Старая цена',
|
||||||
)
|
)
|
||||||
|
|
||||||
i_history_quantity = models.IntegerField(
|
i_history_quantity = models.IntegerField(
|
||||||
# Устанавливая количество в ноль, можно указать, что предложение более не доступно. Если оффер вернется,
|
# Устанавливая количество в ноль, можно указать, что предложение более не доступно. Если оффер вернется,
|
||||||
# то через новую запись в TbOfferHistory можно будет отследить, что он был в наличии, пропал, а потом
|
# то через новую запись в TbOfferHistory можно будет отследить, что он был в наличии, пропал, а потом
|
||||||
@@ -536,17 +536,16 @@ class TbOfferHistory(models.Model):
|
|||||||
default=0,
|
default=0,
|
||||||
verbose_name='Старое количество',
|
verbose_name='Старое количество',
|
||||||
)
|
)
|
||||||
|
# Откуда приехало изменение (какой источник данных) можно получить через k_offer.k_source, так что отдельного
|
||||||
# Откуда приехало изменение
|
# поля для источника в истории не нужно. Но если вдруг понадобится, то можно будет
|
||||||
k_source = models.ForeignKey(
|
# k_source = models.ForeignKey(
|
||||||
TbSource,
|
# TbSource,
|
||||||
null=True,
|
# null=True,
|
||||||
default=None,
|
# default=None,
|
||||||
on_delete=models.SET_NULL,
|
# on_delete=models.SET_NULL,
|
||||||
related_name='source_to_offer_history', # ← source.source_to_offer_history.all()
|
# related_name='source_to_offer_history', # ← source.source_to_offer_history.all()
|
||||||
verbose_name='Источник изменений',
|
# verbose_name='Источник изменений',
|
||||||
)
|
# )
|
||||||
|
|
||||||
j_history_metadata = models.JSONField(
|
j_history_metadata = models.JSONField(
|
||||||
default=dict,
|
default=dict,
|
||||||
blank=True,
|
blank=True,
|
||||||
@@ -557,13 +556,14 @@ class TbOfferHistory(models.Model):
|
|||||||
)
|
)
|
||||||
t_history_created = models.DateTimeField(
|
t_history_created = models.DateTimeField(
|
||||||
auto_now_add=True,
|
auto_now_add=True,
|
||||||
|
db_index=True,
|
||||||
verbose_name="Дата создания",
|
verbose_name="Дата создания",
|
||||||
)
|
)
|
||||||
# Нам не нужен `t_history_updated` потому что это "снимок состояния" и его не нужно менять
|
# Нам не нужен `t_history_updated` потому что это "снимок состояния" и его не нужно менять
|
||||||
# после создания. И если вдруг понадобится, то правильнее будет добавить новую запись.
|
# после создания. И если вдруг понадобится, то правильнее будет добавить новую запись.
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"History #{self.id} for offer {self.k_offer_id}"
|
return f"history #{self.id} for offer {self.k_offer_id}"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'История оффера'
|
verbose_name = 'История оффера'
|
||||||
|
|||||||
Reference in New Issue
Block a user