2

一連のオブジェクト間でいくつかの関係タイプのデータを保存する必要があります (それらを Person と呼びましょう)。したがって、次のようなモデルもあります。

class Person(models.Model):
    name = models.CharField(max_length=64)

class Relationship(models.Model)
    person1 = models.ForeignKey(Person, related_name='person1')
    person2 = models.ForeignKey(Person, related_name='person2')
    relationship_type = models.ChoiceField(choices=...)
    information = models.TextField()

...したがって、各人物は他の人物にリンクできます。ただし、一部の関係は方向性がないため、person1 が person2 であるかどうかは関係ありません (この例では、PersonA が PersonB の「友達」であるとします)。他のタイプの関係は、順序が重要な場合に方向性があります (たとえば、PersonC は PersonD の「ボス」です)。

Djangoでこれを処理する最良の方法は何ですか?

4

1 に答える 1

2

考えられる解決策は、ユーザー間の関係に 2 つのモデルを用意することです。1 つは双方向用で、もう 1 つは双方向用 です。プログラムのロジックについて考えてみてください。ほとんどの場合、データベースからユーザーを取得するたびに、それがどのような関係であるかを知る必要があります。2 つのリレーションシップ モデルを使用すると、このような問題は発生しません。この方法の唯一のトレードオフは、個人間のすべての関係を表示するために 2 つのクエリを作成する必要があることですが、ほとんどの場合、これはそれほど多くのタスクではありません。

于 2013-04-13T15:21:32.827 に答える