1

ある人が別の人を友達として追加できる小さなプロジェクトを実装しようとしています。

私はデータベースでこの関係をモデル化したい:私は考えた、私は別のモデルfriendshipを作成し、そのモデルを次のように記述します:

class friendship(models.Model):
  friend = models.ManyToManyField(User)

これで全部ですか?私はどういうわけか、これを設計する方法がわからないロジックで立ち往生しています..ドキュメントを読みましたが、どういうわけか要点に達していません。誰か助けてください。

どうもありがとう

4

1 に答える 1

5

リレーションに関する追加情報を保存する必要がない限り、別のモデルを作成する必要はありません。たとえば、基本的な関係はすでに定義されています。

class User(models.Model):
  ...
  friends = models.ManyToManyField(self) # self means User.

友達の種類や親しい関係などの追加情報を保存したい場合。次に、追加のモデルが必要です。

class User(models.Model):
    ...
    friends = models.ManyToManyField(self, through='Friendship')


class Friendship(models.Model):
    from_user = models.ForeignKey(User, related_name="from_user")
    to_user = models.ForeignKey(User, related_name="to_user")
    friend_type = models.CharField(max_length=255)
    friend_rated = models.FloatField()
于 2013-04-07T14:12:13.427 に答える