Код: Выделить всё
+--------------+ +-----------------+
| Product | | ProductVariant |
+--------------+ +-----------------+
| id (PK) || id (PK) |
| name | | product_id (FK) |
| owner_id (FK)| | note |
| created_at | | stock |
| updated_at | | price |
+--------------+ +-----------------+
from django.contrib.auth import get_user_model
User = get_user_model()
class Product(models.Model):
name = models.CharField(max_length=255)
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='products')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class ProductVariant(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='variants')
note = models.TextField() # Example: "Size: XL, Color: Red"
stock = models.PositiveIntegerField()
price = models.DecimalField(max_digits=10, decimal_places=2)
def __str__(self):
return f"{self.product.name} - {self.note}"
< /code>
Приложение предназначено для обработки вариантов продукта, которые часто предопределены и не изменяются динамически. < /li>
Пользователи вручную вводят в систему, основанные на , которые они имеют < /strong>. Устранение ненужных таблиц и отношений. < /li>
< /ol>
Я знаю, что большинство приложений используют хорошо структурированные реляционные модели для управления вариантами. И я волнуюсь, что это может создать ненужные осложнения. < /li>
Я обеспокоен этим упрощенным подходом, который можно считать "плохой дизайн" < /strong>, даже если он лучше подходит для моего использования. Сценарии, в которых варианты предопределены и записаны вручную? Каковы потенциальные ловушки, о которых я должен знать при использовании этой конструкции по сравнению с более «стандартной» реляционной моделью?
Подробнее здесь: https://stackoverflow.com/questions/795 ... d-of-compl