Code: Select all
+--------------+ +-----------------+
| 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>
Die Anwendung ist für die Umgang mit Produktvarianten ausgelegt, die häufig vordefiniert sind und nicht dynamisch ändern. Beseitigung unnötiger Tabellen und Beziehungen. Ich mache mir Sorgen, dass es zu unnötigen Komplikationen führen könnte. Varianten werden vordefiniert und manuell aufgezeichnet? Was sind die potenziellen Fallstricke, die ich bei der Verwendung dieses Designs im Vergleich zu einem "Standard" -Relationsmodell bewusst sein sollte?