1

私はDjangoで単純な「フォロー」機能を作ろうとしていdjango.contrib.authます.

class User(models.Model):
     followers = models.ManyToManyField('self')
     # rest of code

私は自分のサイトで、ユーザー X とユーザー Y の 2 人のユーザーでこれをテストしましたが、ユーザー X がユーザー Y のフォロワーに追加されると、ユーザー Y もユーザー X のフォロワーに追加されますが、これは意図した結果ではありませんでした。これを一方的な関係にするにはどうすればよいですか?私は何か間違ったことをしていますか?

4

2 に答える 2

1

関係を非対称にする必要があります。

于 2012-08-12T23:09:00.357 に答える
1

デフォルトでは、自己参照ManyToManyFieldは対称です。ドキュメントで次を参照してください。

...ManyToManyFieldは対称であると想定されます。つまり、私があなたの友達なら、あなたは私の友達です。

自分自身との多対多の関係で対称性が必要ない場合は、symmetry を False に設定します。これにより、Django は逆の関係の記述子を追加し、ManyToManyField の関係を非対称にすることができます。

以下を追加することで実現できます。

models.ManyToManyField("self", symmetrical=False)

于 2012-08-12T23:09:25.020 に答える