Следовать и отменить подписку на system django

#django #django-models #django-forms #django-views #django-templates

#django #django-модели #django-формы #django-просмотры #django-шаблоны

Вопрос:

у меня есть система follow и unfollow для моего приложения, но когда я хочу, чтобы с помощью инструкции if html автоматически менялся с follow на unfollow.. но, к сожалению, мой цикл for всегда выдает False в views.py и я не знаю, что не так. вот мой models.py файл

 class FollowUser(models.Model):
    profile = models.ForeignKey(to=Profile, on_delete=models.CASCADE)
    Followed_by = models.ForeignKey(to=User, on_delete=models.CASCADE)

    def __str__(self):
        return "%s" % self.Followed_by
  

вот мой views.py файл

 class UserListView(ListView):
    model = Profile
    context_object_name = 'users'
    template_name = 'dashboard/user_list.html'

    def get_queryset(self):
        si = self.request.GET.get("si")
        if si == None:
            si = ""
        profList = Profile.objects.filter(Q(phone__icontains = si) | Q(location__icontains = si) | Q(gender__icontains = si) | Q(organization_name__icontains = si)).order_by("-id");
        for p1 in profList:
            p1.followed = False
            ob = FollowUser.objects.filter(profile=p1, Followed_by=self.request.user.profile.id)
            if ob:
                p1.followed = True
        return profList
  

Ответ №1:

Вместо того, чтобы использовать user.profile.id для поиска пользователя по идентификатору профиля, вы должны выполнять поиск только по его пользователю.

 ob = FollowUser.objects.filter(profile=p1, Followed_by=self.request.user.profile.id)
  

попробуйте:

 ob = FollowUser.objects.filter(profile=p1, Followed_by=self.request.user)