Ich habe folgende Aufgabe. Mit drei Modellen Project, User und PurchaseOrder. Ich möchte eine Mitgliedschaft für einen Benutzer in einem Projekt erstellen können. Ein Benutzer kann Mitglied in beliebigen Projekten sein. Dies kann mit einem ManyToManyField gelöst werden.Viele-zu-viele-Beziehung mit zusätzlichen Feldern - wie man Eindeutigkeit umgehen kann
Zusätzlich sollte sich eine Mitgliedschaft auf einen PurchaseOrder beziehen, da ich die Arbeitsstunden bestimmten PurchaseOrders zuordnen möchte.
Ich denke, dass dies gelöst werden könnte, indem Sie ein through-table für das ManyToManyField verwenden und ein ForeignKey für das PurchaseOrder-Modell definieren. Somit hätte ich für jede Mitgliedschaft einen Hinweis auf eine Kauforder.
In Wirklichkeit wird eine Mitgliedschaft für ein Projekt aktiv bleiben, während, nachdem das Geld für einen PurchaseOrder ausgegeben wurde, ein neuer PurchaseOrder der Mitgliedschaft zugewiesen werden muss. Dies wäre auch einfach, indem Sie den ForeignKey einfach auf einen neuen PurchaseOrder aktualisieren.
Aber jetzt meine Frage:
ich das alte Projekt-Mitgliedschaft-PurchaseOrder-Relation (Datenzeile in der Mitgliedertabelle, für die Geschichte Tracking) behalten möchten, setzen Sie ihn auf Behinderte und fügen Sie eine neue Projekt-Mitgliedschaft -PurchaseOrder-Relation, die denselben ForeignKey wie Benutzer und Projekt, aber einen anderen als den PurchaseOrder hat, und ein Flag, das auf aktiviert gesetzt ist.
Ist dies ein gültiger Ansatz, wird das funktionieren, wird es möglich sein, die Eindeutigkeit zu umgehen (oder gibt es keine Definition für das ManyToManyField per Definition), oder haben Sie eine bessere Idee, wie das geht?
Ich bekomme nicht wirklich den Punkt, wenn Sie wollen, dass Mitgliedsobjekte "einzigartig" sind? –
Ich möchte nicht, dass Mitgliederobjekte einzigartig sind, ich dachte, sie könnten einzigartig sein. Aber ich habe es einfach überprüft und sie sind es auch nicht. Was gut ist. Ich hätte es wahrscheinlich überprüfen sollen, bevor ich die Frage gestellt habe. –