2017-06-15 43 views
0

所以我目前有我的喜歡的應用程序處理朋友的請求,它工作正常,但我的通知似乎並沒有工作。無論何時,無論天氣如何,他們都喜歡其他人,他們只會發送兩個notify.send中的第二個。朋友要求和確認問題

繼承人我的代碼:

View.py

def like_user(request, id): 
    pending_like = get_object_or_404(User, id=id) 
    user_like, created = UserLike.objects.get_or_create(user=request.user) 
    user = get_object_or_404(User, username=request.user) 
    liked_user, like_user_created = UserLike.objects.get_or_create(user=user) 
    if pending_like in user_like.liked_users.all(): 
     user_like.liked_users.remove(pending_like) 
    elif request.user in liked_user.liked_users.all(): 
     user_like.liked_users.add(pending_like) 
     notify.send(request.user, 
         #action=request.user.profile, 
        target=request.user.profile, 
        recipient=pending_like, 
        verb='sent you a friend request view'), 
    else: 
     user_like.liked_users.add(pending_like) 
     notify.send(request.user, 
         #action=request.user.profile, 
        target=request.user.profile, 
        recipient=pending_like, 
        verb='accepted your friend request view') 
    return redirect("profile", username=pending_like.username) 

models.py

class UserLikeManager(models.Manager): 
    def get_all_mutual_likes(self, user, number): 
     try: 
      qs = user.liker.liked_users.all().order_by("?") 
     except: 
      return [] 
     mutual_users = [][:number] 
     for other_user in qs: 
      try: 
       if other_user.liker.get_mutual_like(user): 
        mutual_users.append(other_user) 
      except: 
       pass 
     return mutual_users 



class UserLike(models.Model): 
    user = models.OneToOneField(User, related_name='liker') 
    liked_users = models.ManyToManyField(User, related_name='liked_users', blank=True) 

    objects = UserLikeManager() 


    def __unicode__(self): 
     return self.user.username 

    def get_mutual_like(self, user_b): 
     i_like = False 
     you_like = False 
     if user_b in self.liked_users.all(): 
      i_like = True 
     liked_user, created = UserLike.objects.get_or_create(user=user_b) 
     if self.user in liked_user.liked_users.all(): 
      you_like = True 
     if you_like and i_like: 
      return True 
     else: 
      return False 

,你可以在我的views.py看到我有一個if語句有一個ELIF,然而,它似乎從來沒有拿起這個elif並直接去其他人,所以在我的通知我總是得到'接受你的朋友請求視圖'的消息。我似乎無法解決這個問題,如果任何人都可以看到缺點,請讓我知道。

當我在我的個人資料應用程序中使用它來顯示按鈕顯示,確認好友請求它似乎工作。這裏是我的配置文件代碼:

view.py

def profile_view(request, username): 
    user = get_object_or_404(User, username=username) 
    liked_user, like_user_created = UserLike.objects.get_or_create(user=user) 
    do_they_like = False 
    if request.user in liked_user.liked_users.all(): 
     do_they_like = True 
     context = { 
      "do_they_like": do_they_like 
        } 
     return render(request, "profiles/profile_view.html", context) 

感謝

回答

0

問題在下面線以上

user = get_object_or_404(User, username=request.user) 

更新下面行

user = get_object_or_404(User, pk=request.user.pk) 
+0

嗨,謝謝你的評論,但它並沒有' t似乎工作,ive添加了一些代碼,上面顯示了一個when_user.liked_users.all()時的實例:似乎工作。 – caldf