#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)