2017-11-22 5 views
0

Ich schreibe gerade eine Anwendung für ein BioTech-Labor. Die Idee ist, Umgebungen mit einer voreingestellten Liste von Produkten vorzubereiten.Django Modelldaten als Voreinstellung für die Erstellung eines anderen Modells

Es gibt auch eine Notwendigkeit, den Lagerbestand der Produkte zu behandeln.

ich die folgende Struktur versucht, aber ich habe keine Ahnung, wie die Presets ...

#models.py 
class Products(models.Model): 
    nutrients = models.CharField(max_length=10) 
    globalQuantity = models.FloatField() 
    rcvdate = models.DateTimeField() 
    user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL) 
    lot = models.CharField(max_length=50) 

class Environments(models.Model): 
    lot = models.CharField(max_length=25, unique=True) 
    date = models.DateTimeField() 
    user = models.ForeignKey(User, on_delete=models.SET_NULL) 
    initvolume = models.FloatField() 
    preparation = ? 

class Presets(models.Model): 
    name = models.CharField(max_length=25) 
    product = models.ForeignKey('products', on_delete=models.SET_NULL) 
    quantity = models.FloatField() 

Die Idee dann Preset zu handhaben

wie folgt zu füllen ist:

1. name = preset1 | product = NH4 | quantity = 50 
2. name = preset1 | product = SO4 | quantity = 25 
3. name = preset2 | product = NaCl | quantity = 40 
4. name = preset2 | product = Mn | quantity = 30 

Wo ein „Rezept "(wie Preset1 und Preset2) enthält verschiedene Produkte. Es muss dynamisch sein, da Benutzer in der Lage sein müssen, "Rezepte" hinzuzufügen, wenn sie möchten.

Das Problem ist: „Wie eine Vorbereitung auf eine Umgebung mit einer voreingestellten in den Klassenvorgaben definiert hinzufügen?“

Die Felder einer Tabelle zu Beginn sind so definiert, wie Vorbereitungen handhaben, die unterschiedlichen folgende voreingestellt werden kann Struktur ?

+0

Die Modelle sollten Sie den ersten Buchstaben groß schreiben. – aircraft

+0

Danke für den Hinweis =) – jeremghs

+0

Und achten Sie auf Singular/Plural ... – dirkgroten

Antwort

0

Sie benötigen ein zusätzliches Modell: Recipe. Modelliere deine db immer mit den Dingen, über die du auch sprichst, das macht es viel einfacher. Annahme: Voreinstellungen können von vielen Rezepten wiederverwendet werden.

def Recipe(models.Model): 
    name = models.CharField() 
    presets = models.ManyToManyField(Preset) 

def Preset(models.Model): 
    product = models.ForeignKey(Product) 
    quantity = models.FloatField() 

def Environment(model.Model): 
    etc... 
    preparation = ForeignKey(Recipe) 
+0

Eine Alternative wäre, eine 'ManyToMany' mit' through' Beziehung zu verwenden, so dass eine 'Umgebung' auf' Presets' _through_ a 'Rezept verweist '. – dirkgroten

+0

Ich habe es mit dem Parameter 'through' gemacht :) Vielen Dank für Ihre schnelle Antwort! – jeremghs

Verwandte Themen