2017-06-04 52 views
0

我是網絡開發新手,所以這個問題可能不是直接的,但請耐心等待。我在一個社交網絡上工作,用戶可以通過兩種不同的方式跟蹤另一個用戶......安然通道......我創建了兩個模型來定義關係。多對多的關係如下。Django多對多的誤區

如何讓這個模型完全獨立於對方?所以可以說一個用戶可以有500個粉絲和200個訪客?

我使用下面的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

而不是具有兩個獨立的通過模型,具有帶有type字段一個單一的模式。

+0

丹尼爾羅斯曼。請你能簡要地說明一下嗎?......我知道這一點。我使用「Django by Example」作爲指導。謝謝 –