2017-06-04 15 views
0

私はWeb開発の初心者ですので、この質問は簡単ではないかもしれませんが、私と一緒にご負担ください。私が2つの異なる方法で別のユーザーに従うことができるソーシャルネットワークに取り組んでいます...とにかく...私は関係を定義するために2つのモデルを作成しました。多対多関係は次のようになります。Djangoでの多対多の誤解

このモデルを完全に独立させるにはどうすればよいですか?だから、ユーザーが500Followersと200Guestsを持つことができると言うことができますか?

私は以下のjavascriptコードを使用してフォローボタンを切り替えますが、その両方が増加します。これは問題の偉大な概要ではないかもしれませんが、それは私がこれを初めて知ったからです。試してみてください。私は途中でdjangoを使用しています。

class Follower(models.Model): 
    user_from = models.ForeignKey(User, related_name='rel_from_set') 
    user_to = models.ForeignKey(User, related_name='rel_to_set') 
    created = models.DateTimeField(auto_now_add=True, db_index=True) 

class Meta: 
    ordering = ('-created',) 

def __str__(self): 
    return "{} is now a following".format(self.user_from, self.user_to) 

class Guests(models.Model): 
    user_fromt = models.ForeignKey(User, related_name='yel_from_set') 
    user_tot = models.ForeignKey(User, related_name='yel_to_set') 
    created = models.DateTimeField(auto_now_add=True, db_index=True) 

class Meta: 
    ordering = ('-created',) 

def __str__(self): 
    return '{} follows {}'.format(self.user_from, self.user_to) 


User.add_to_class('follows', models.ManyToManyField('self', 
through=Guests, related_name='guest', symmetrical=False)) 

User.add_to_class('follows', models.ManyToManyField('self', 
through=Follwer, related_name='guest', symmetrical=False))  

ビュー

def user_follow(request): 
    user_id = request.POST.get('id') 
    action = request.POST.get('action') 
    if user_id and action: 
     try: 
      user = User.objects.get(id=user_id) 
      if action == 'follow': 
       Contact.objects.get_or_create(user_from=request.user,  
       user_to=user) 
       create_action(request.user, 'is now a fan of', user) 
      else: 
       Contact.objects.filter(user_from=request.user, 
      user_to=user).delete() 
      return JsonResponse({'status':'ok'}) 
     except User.DoesNotExist: 
      return JsonResponse({'status':'ko'}) 
     return JsonResponse({'status':'ko'}) 

答えて

0

ではなくモデルを介して別個の2を持つ、typeフィールドを持つ単一のモデルを持っています。

+0

ダニエル・ローズマン。それについて簡単に説明できますか?...私はこれを知っていました。私はガイドとして "Django by Example"を使用しています。ありがとう –