私は現在、次の状況で私のdjangoモデルを設計しようとしています。私はクラスと呼ばれ、すべてのユーザーは一意のユーザーIDを持っています。今は、ユーザーが持っているコインに基づいてランク付けしたいと思います。ただし、ユーザーがランキングを表示したときに、友だちのユーザーだけがユーザーに表示されるようにしたいと考えています。djangoモデルの多対多リレーションシップ
したがって、ユーザーが友人であるすべてのユーザーIDを含むManytoManyフィールド "isfriend"を持つFriendsクラスを定義しています。しかし、私はこれをやろうとしている方法が最善の方法ではないと感じています。どのように私はこれを実装すべきですか?私の下手な英語のため申し訳ありません
class User(models.Model):
userid = models.CharField(max_length=26,unique=True)
coins = models.IntegerField()
friends = models.ManyToManyField('self')
def __str__(self):
return self.userid
:
class User(models.Model):
userid = models.CharField(max_length=26,unique=True)
coins = models.IntegerField()
def __str__(self):
return self.userid
class Friends(models.Model):
isfriend = models.ManytoManyField(User)
def __str__(self):
return self.isfriend
あなたのユーザーに 'friends'フィールドを追加するだけで、ManytoMany関係があるのはなぜですか? – Fcmam5
理由は同じテーブルで動作するかどうかわからなかったからです。だからあなたによれば、私は友人= models.ManytoManyField(ユーザー)をユーザーテーブルに追加するだけで良いでしょう。 – robjeiter
'(User)'を '' self''で置き換えると、 'friends = models.ManyToManyField( 'self')' – Fcmam5