2017-10-09 36 views
0

私は現在、次の状況で私の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 
+0

あなたのユーザーに 'friends'フィールドを追加するだけで、ManytoMany関係があるのはなぜですか? – Fcmam5

+0

理由は同じテーブルで動作するかどうかわからなかったからです。だからあなたによれば、私は友人= models.ManytoManyField(ユーザー)をユーザーテーブルに追加するだけで良いでしょう。 – robjeiter

+0

'(User)'を '' self''で置き換えると、 'friends = models.ManyToManyField( 'self')' – Fcmam5

答えて

4

ユーザーは、それがのようなソリューションを提供し、多くのユーザー(友人)があります。

+0

もう1つ質問です。このケースでは、この多対多フィールドをどのように設定しますか? ユーザー= User.objects.get(ユーザーID = ID) friendsid = "101" user.friends.add(friendsid) は動作しないようです。それは私を返しますdjango.db.utils.DataError:整数が範囲外です – robjeiter

関連する問題