Ich versuche passieren müssen, um ein Modell für das folgende Szenario zu erstellen:Django Modelle - erstellen Elemente, die verschiedene Aufgaben
Ein Element geliefert wird und durch verschiedene Aufgaben in einer bestimmten Reihenfolge zu übergeben. Sobald das Element eine Aufgabe durchlaufen hat, wird die Aufgabe als abgeschlossen markiert. Die Namen der Aufgaben sind im Voraus bekannt.
Zum Beispiel:
- erstellen Artikel
- Aufgabe 1 'registrieren, den Punkt'
- Aufgabe 2 'installieren Sie den Punkt'
- Aufgabe 3 'überprüfen Protokolle Artikel'
Ich begann mit einem einfachen Modell wie diesem, b Aber es sieht sehr statisch für mich aus und nicht wirklich, was ich suche.
models.py
class Item(models.Model):
item_id = models.PositiveIntegerField()
item_priority = models.PositiveSmallIntegerField(default=2)
item_date_created = models.DateField(auto_now_add=True)
task1_name = models.CharField(max_length=128)
task1_done_by = models.CharField(max_length=64, blank=True)
task1_done_date = models.DateField(null=True, blank=True)
task2_name = models.CharField(max_length=128)
task2_done_by = models.CharField(max_length=64, blank=True)
task2_done_date = models.DateField(null=True, blank=True)
# ... next 20 tasks
def __str__(self):
return str(self.item_id)
Versuch Relational Felder, zum Beispiel ein ManyToMany Feld vorab die Aufgaben, endete ich mit auf den Punkt:
class Task(models.Model):
name = models.CharField(max_length=128)
done_by = models.CharField(max_length=64, blank=True)
done_date = models.DateField(null=True, blank=True)
class Item(models.Model):
item_id = models.PositiveIntegerField()
item_priority = models.PositiveSmallIntegerField(default=2)
item_date_created = models.DateField(auto_now_add=True)
tasks = models.ManyToManyField(Task)
Aber, wenn ich zwei Elemente erstellen mit die gleichen Aufgaben und markieren Sie die Aufgabe des ersten Artikels als erledigt es wird auch im zweiten Artikel als erledigt markiert - das ist nicht das, was ich will.
Wie wird eine Aufgabe einem bestimmten Objekt zugewiesen? Oder welches andere Modell passt am besten zu meinem Szenario?
Ich habe meine Frage ein wenig angepasst, mein Problem zu klären: Wenn ich zwei Elemente mit den gleichen Aufgaben erstellen und die Aufgabe des ersten Elements markieren wie getan, wird es auch im zweiten Punkt als erledigt markiert - das ist nicht, was ich will und ich suche nach einer Lösung dafür. –
Die Klasse Item (models.Models) ist eine Vorlage für ein Datenbankobjekt. Sie erstellen Instanzen daraus. Wenn Sie eine Aufgabeninstanz mit zwei Exemplarinstanzen verknüpfen und die Aufgabe aktualisieren, ist dies für die zwei Elemente, die dort verlinken, identisch. Was Sie tun müssen, ist Aufgabe1 für Element1 und Aufgabe2 für Element2 zu erstellen. Auf diese Weise trennen Sie die Aufgaben. – rollinger
Ich beginne zu verstehen. Ich muss neue Aufgaben erstellen und mit jedem neuen Element verknüpfen und sie nicht wiederverwenden. Haben Sie zufällig ein Codebeispiel für das Erstellen und Hinzufügen einer Aufgabe von Hand? –