Ich bin grade an einem Django-Projekt dran mit dem ich alle unsere Produktdaten (techn. Daten, Dokumente, Chargen-Verwaltung.. halt alles was dazugehört) zusammenfassen möchte. Erstmal damit wir alle Daten zentral an einem Platz haben und später auch um verschiedene weitere Arbeitsabläufe zu erleichtern.
Grob haben wir 3 Produktgruppen: Leuchten, Sicherheitsbeleuchtung und Zubehör. In der Produktgruppe Leuchten kommt es recht oft vor, dass es von einem Produkt mehrere Varianten gibt, die sich z. B. nur in der Farbe unterscheiden oder noch eine zusätzliche Option dabei haben. Die sonstigen Produktdetails und leuchtenspezifischen Daten sind aber identisch.
Mein Problem jetzt...Wie mache ich die Verbindung zwischen ProductVariant, Lamp, EmergencyLighting
Eine Idee war Vererbung. Also etwas in der Art wie
Nur lese ich (fast) überall nur, dass man Vererbung in Django eigentlich vermeiden soll..
Mein Model sieht jetzt grob vereinfacht so aus (Kommentare sind jetzt nur fürs Forum drin ;-))
Wenn also jemand eine Idee hat.. Wäre das wirklich super
Danke schonmal
Grob haben wir 3 Produktgruppen: Leuchten, Sicherheitsbeleuchtung und Zubehör. In der Produktgruppe Leuchten kommt es recht oft vor, dass es von einem Produkt mehrere Varianten gibt, die sich z. B. nur in der Farbe unterscheiden oder noch eine zusätzliche Option dabei haben. Die sonstigen Produktdetails und leuchtenspezifischen Daten sind aber identisch.
Mein Problem jetzt...Wie mache ich die Verbindung zwischen ProductVariant, Lamp, EmergencyLighting
Eine Idee war Vererbung. Also etwas in der Art wie
Python:
class ProductVariant(models.Model):
...
product = models.ForeignKey(Product)
class ProductDetails(models.Model)
...
class Product(models.Model):
...
product_details = models.ForeignKey(ProductDetails)
class Lamp(Product):
...
class Emergencylighting(Product):
...
Mein Model sieht jetzt grob vereinfacht so aus (Kommentare sind jetzt nur fürs Forum drin ;-))
Python:
# Daten die sich von Variante zu Variante ändern (können)
class ProductVariant(models.Model):
item_id = models.Charfield()
case_colour = models.ForeignKey(Colour)
...
options = models.ManyToManyField('ProductVariant', through='OptionDetails', related_name='option_details')
#techn. Daten die bei allen Produkten benötigt werden
class ProductDetails(models.Model):
length = models.IntegerField()
width = models.IntegerField()
height = models.IntegerField()
diameter = models.IntegerField()
weight = models.DecimalField()
...
#halt die Leuchtenpezifischen Daten ;-).
class Lamp(models.Model)
driver_included = models.BooleanField()
external_driver = models.BooleanField()
changeable_driver = models.BooleanField()
average_lifespan = models.IntegerField()
ugr = models.IntegerField()
cri = models.IntegerField()
...
product_details = models.ForeignKey(ProductDetails)
# dto für Sicherheitsbeleuchtung
class EmergencyLighting(models.Model)
lum_flux_on_wire = models.IntegerField()
lum_flux_on_accu = models.IntegerField()
autotest = models.BooleanField()
...
product_details = models.ForeignKey(ProductDetails)
Wenn also jemand eine Idee hat.. Wäre das wirklich super

Danke schonmal