私は、セットのすべてのメンバー間の対の関係をモデル化したいと思います。私はペアA-Bを追加するとDjango undirected 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')
、それが成功し、再び-Bを追加することから私を防ぎますが、B-Aを追加してから私を防ぐことはできません。
私は次のように試みましたが、役に立たないです。
unique_together = (('ingredient_a', 'ingredient_b'), ('ingredient_b', 'ingredient_a'))
編集: は、私はあなたが、そのだけではなくのForeignKey、その呼ばれる多対多の関係を定義した何のようなモデルを定義した場合の項目
私は指定された2つのアイテムごとにrelationship_valueを一意にします。これは、ManyToManyの関係を一度に1つのアイテムに制限する必要があることを意味します。これは私が知る限り、自明ではありません。 –
あなたの編集は矛盾を防ぎます。入力いただきありがとうございます。冗長ペアA-B、B-Aを作成して解決しました。このテーブルはプロダクションクエリには使用されませんが、将来の使用のために混乱マトリクスを作成するだけなので、パフォーマンスは問題になりません。 パフォーマンスを考慮する必要がある場合は、どちらの方が良いか疑問に思っています。あなたのアプローチには、更新と削除のメソッドをオーバーライドする必要がないという利点があります。 –
うれしい、私はいくつかの助けになるかもしれない... – zaidfazil