mirror of
https://github.com/magnum-opus-tender-hack/backend.git
synced 2024-11-15 14:06:36 +03:00
96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
from django.db import models
|
|
|
|
|
|
class Characteristic(models.Model):
|
|
name = models.CharField("Имя", unique=True, blank=False, max_length=250)
|
|
value = models.CharField("Значение", blank=False, max_length=250)
|
|
|
|
def __str__(self):
|
|
return str(self.name)
|
|
|
|
def serialize_self(self):
|
|
return {"name": self.name, "value": self.value}
|
|
|
|
class Meta:
|
|
db_table = "Characteristic"
|
|
|
|
|
|
class UnitCharacteristic(models.Model):
|
|
name = models.CharField("Имя", blank=False, max_length=250)
|
|
value = models.CharField("Значение", blank=False, max_length=250)
|
|
unit = models.CharField("Размерность", blank=False, max_length=250)
|
|
|
|
def __str__(self):
|
|
return str(self.name)
|
|
|
|
def serialize_self(self):
|
|
return {"name": self.name, "value": self.value, "unit": self.unit}
|
|
|
|
class Meta:
|
|
db_table = "UnitCharacteristic"
|
|
|
|
|
|
class Category(models.Model):
|
|
name = models.CharField("Имя", unique=True, blank=False, max_length=250)
|
|
|
|
def __str__(self):
|
|
return str(self.name)
|
|
|
|
class Meta:
|
|
db_table = "Category"
|
|
|
|
|
|
class Product(models.Model):
|
|
id = models.IntegerField(
|
|
"ID CTE", primary_key=True, unique=True, blank=False, null=False, db_index=True
|
|
)
|
|
name = models.CharField("Название CTE", unique=True, blank=False, max_length=250)
|
|
category = models.ForeignKey(
|
|
Category, related_name="products", on_delete=models.CASCADE
|
|
)
|
|
|
|
def __str__(self):
|
|
return str(self.name)
|
|
|
|
def serialize_self(self) -> dict:
|
|
return {
|
|
"name": self.name,
|
|
"characteristic": [
|
|
x.serialize_self() for x in self.characteristics.objects.all()
|
|
]
|
|
+ [x.serialize_self() for x in self.unit_characteristics.objects.all()],
|
|
}
|
|
|
|
class Meta:
|
|
db_table = "Product"
|
|
|
|
|
|
class ProductCharacteristic(models.Model):
|
|
product = models.ForeignKey(
|
|
Product, related_name="characteristics", on_delete=models.CASCADE
|
|
)
|
|
characteristic = models.ForeignKey(
|
|
Characteristic, related_name="products", on_delete=models.CASCADE
|
|
)
|
|
|
|
def __str__(self):
|
|
return f"{self.product} in {self.characteristic}"
|
|
|
|
class Meta:
|
|
db_table = "ProductCharacteristic"
|
|
|
|
|
|
class ProductUnitCharacteristic(models.Model):
|
|
product = models.ForeignKey(
|
|
Product, related_name="unit_characteristics", on_delete=models.CASCADE
|
|
)
|
|
characteristic = models.ForeignKey(
|
|
UnitCharacteristic, related_name="products", on_delete=models.CASCADE
|
|
)
|
|
|
|
def __str__(self):
|
|
return f"{self.product} in {self.characteristic}"
|
|
|
|
class Meta:
|
|
db_table = "ProductUnitCharacteristic"
|