Ich möchte paarweise Beziehungen zwischen allen Mitgliedern eines Satzes modellieren.Django ungerichtet unique-together
class Match(models.Model):
foo_a = models.ForeignKey(Foo, related_name='foo_a')
foo_b = models.ForeignKey(Foo, related_name='foo_b')
relation_value = models.IntegerField(default=0)
class Meta:
unique_together = ('ingredient_a', 'ingredient_b')
Wenn ich ein Paar A-B hinzufügen, es hindert mich erfolgreich aus der Addition wieder A-B, aber nicht daran hindert mich nicht aus dem B-A hinzufügen.
Ich versuchte folgendes, aber ohne Erfolg.
unique_together = (('ingredient_a', 'ingredient_b'), ('ingredient_b', 'ingredient_a'))
Edit: muss ich die relationship_value für jedes Paar von Elementen
Ich möchte, dass der relationship_value für alle zwei gegebenen Elemente eindeutig ist. Das bedeutet, dass Sie die ManyToMany-Beziehung auf jeweils nur 1 Element beschränken müssen, was meines Wissens nicht trivial ist. –
Ihre Bearbeitung verhindert Inkonsistenzen. Danke für die Eingabe. Ich löste es, indem ich redundante Paare A-B, B-A schuf. Die Tabelle wird nicht für Produktionsabfragen verwendet, sondern nur, um eine Konfusionsmatrix für die zukünftige Verwendung zu erstellen, sodass die Leistung kein Problem darstellt. Ich frage mich immer noch, welcher der beiden Ansätze wäre besser, wenn Leistung berücksichtigt werden müsste. Ihr Ansatz hat den Vorteil, dass Sie die Methoden zum Aktualisieren und Entfernen nicht überschreiben müssen. –
Froh, ich könnte eine Hilfe sein ... – zaidfazil