mir fehlt grade ein wenig die "Eingebung" oder vielleicht nur ein Schubs in die richtige Richtung.
Ich habe mit Django (angefangen hatte ich mit Flask) einen "Produkt Katalog" für uns intern gebaut in dem alle unsere Produkte mit allen technischen und sonst so benötigten Daten drin sind. Mit der Zeit kamen jetzt immer mehr Dinge hinzu die mein "Katalog" auch noch übernehmen soll. JETZT bin ich aber an dem Punkt an dem mir wohl ein paar Sachen auf die Füße fallen..
Aktuell habe ich an mehreren Stellen in meinem model File bzw. ImageFields. Das wollte ich dann grob so ändern, dass ich alle Dateien in einer Klasse "sammle" und dann einfach per ForeignKey in den jeweiligen Klasse verlinke.
Code: Alles auswählen
class FileType(models.Model):
description = models.CharField(verbose_name=_('Beschreibung'), max_length=250)
class ProductFiles(models.Model):
file = models.FileField(verbose_name=_('Datei'), upload_to='...')
description = models.CharField(verbose_name=_('Beschreibung'), max_length=250)
file_type = models.ForeignKey(FileType, verbose_name=_('Datei Typ'), on_delete=models.PROTECT)
etim_mime_code = models.ForeignKey(ETIMMimeCode, verbose_name=_('ETIM Mime Code'), on_delete=models.PROTECT)
class ProductVariant(models.Model):
...
product_image = models.ForeignKey(ProductFiles, verbose_name=_('Produktbild'), on_delete=models.PROTECT, null=True)
...
class PhotometricData(models.Model):
...
ldt_file = models.ForeignKey(ProductFiles, verbose_name=_('LDT-Datei', ), on_delete=models.PROTECT, null=True)
light_curve = models.ForeignKey(ProductFiles, verbose_name=_('Lichtverteilungskurve', ), on_delete=models.PROTECT, null=True)
...
Ich kann natürlich in jeder (um nachträgliche Änderungen zu vermeiden würde ich es dann überall machen ) Klasse ein ManyToMany- statt des ForeignKey-Fields setzen, damit hätte ich dann eben einige zusätzliche Tabellen.
Hat vielleicht jemand eine "bessere" Lösung?