Отображение всех профилей пользователей в шаблоне Django, понравившихся текущему вошедшему пользователю (в поле ManytoMany)

Я создал портал, на котором пользователи могут видеть профили других пользователей и ставить им лайки. Я хочу показать страницу, на которой зарегистрированные пользователи могут видеть список профилей только тех пользователей, которые им понравились.

У Модели есть файл 'liked', где хранятся лайки каждого профиля пользователя:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    company = models.CharField(max_length=500, blank = True)
    city = models.CharField(max_length=100, blank = True)
    website = models.URLField(max_length=500, blank = True)
    liked = models.ManyToManyField(User, related_name='user_liked', blank=True)

Мой views.py, и здесь я показываю только всех членов, поэтому в моем шаблоне я могу перебирать каждого члена в members... Включая детали 'member.profile' из модели Profile.

@login_required
def all_fav_members(request):
    users = User.objects.all
    context = {'members':users}
    return render(request, 'club/all_fav_members.html', context)

Я перепробовал много вещей, как в файле views.py, так и в моем HTML шаблоне, но я не смог перебрать всех пользователей, связанных с определенным профилем в поле 'liked', где этот пользователь равен request.user.

Я новичок в Django, поэтому пробовал множество способов. В результате обычно я получаю весь список пользователей, а не те, которые понравились текущему пользователю. Один из неработающих примеров:

{% if member.profile.liked.filter(id=request.user.id).exists()%}

Мой шаблон:

 {% for member in members %} 
     <table class="table w-100 table-hover">
        <thead>
           <tr id="header-paragraph-table-top">
               <th>Name & Surname</th>
               <th>Email</th>
               <th>Company</th>
           </tr>
        </thead>
        <tbody>
           <tr id="paragraph-table">
               <td>{{ member.first_name|capfirst }} {{ member.last_name|capfirst }}</td>
               <td><a href="mailto:{{ member.email }}">{{ member.email }}</a></td>
               <td>{{ member.profile.company }}</td>
           </tr>
        </tbody>
     </table>

urls.py

path('all_fav_members/', views.all_fav_members, name='all_fav_members'),

Для решения этой проблемы я бы, вероятно, использовал теги шаблонов. Прочитайте эту страницу, чтобы узнать, как зарегистрировать теги шаблонов: https://docs.djangoproject.com/en/4.0/howto/custom-template-tags/

Внутри your_template_tags:

from django import template

register = template.Library()

@register.filter
def liked_user(user, other_user):
    return user.profile.liked.filter(id=other_user.id).exists()

Внутри вашего шаблона вы можете сделать следующее:

{% load your_template_tags %}
{% if member|liked_user:request.user %}

Хотя я бы, вероятно, обработал это в views.py следующим образом:

for member in context["members"]:
    member.liked_by_user = member.profile.liked.filter(id=request.user.profile.id).exists()

Тогда вы можете просто использовать это свойство в своем шаблоне, например:

{% if member.liked_by_user %}
Вернуться на верх