Цикл For в шаблоне Django

я хочу установить функцию 'отправить запрос/отменить запрос' в шаблоне.
Проблема с отображением, если запрос существует 'cancel', если нет 'send'. Не пойму как правильно получить запрос и сравнить 'profile' с 'to_profile'.
Теперь я застрял с циклом 'for' в цикле 'for'... \

В шаблоне отображается 3 кнопки (одинаковое количество запросов с этого мероприятия) для одного профиля Введите описание изображения здесь

Могли бы вы дать мне несколько советов, как исправить, избежать или сделать по-другому, пожалуйста.
Спасибо!

модель запроса

class EventInviteRequest(models.Model):
    from_event = models.ForeignKey(Event, on_delete=models.CASCADE,
                                   related_name='from_event', null=True)
    to_profile = models.ForeignKey(Profile, on_delete=models.CASCADE,
                                   related_name='to_profile', null=True)
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"From {self.from_event} to {self.to_profile}"

просмотр, который я пытаюсь использовать

def get_list_of_all_users(request, event_id):
    """Get list of all users"""
    event = Event.objects.get(id=event_id)
    profiles = Profile.objects.all()
    requests = EventInviteRequest.objects.filter(from_event=event)

    context = {'profiles': profiles, 'event': event, 'requests': requests}
    return render(request, 'events/invite_all_profiles_to_event.html', context)

шаблон

{% extends 'base.html' %}
{% load static %}

{% block title %}All profiles{% endblock %}

{% block content %}
    
    <h3>All profiles:</h3>

    {% for profile in profiles %}
    <div style="display: inline-block; margin-right: 10px; text-align: center;">
        <a href="{% url 'account:profile' profile.id %}">
            {% if profile.photo %}
                <img src="{{ profile.photo.url }}" width="70" height="100">
            {% else %}
                <img src="{% static 'images/no_img/no_img.png' %}" width="70" height="100">
            {% endif %} 
            <h4>{{ profile.user }}</h4>
        </a>
        {% if request.user == profile.user %}
            <p>You</p>
        {% else %}
            {% if profile in request.user.profile.friends.all %}
                <p>Friends</p>
            {% else %}
                {% if profile == request.user.profile %}
                {% else %}
                    <a href="{% url 'account:send' profile.id %}">Add to friends</a>
                {% endif %}
            {% endif %}
            <br>
        {% endif %}
        {% if request.user.profile == profile %}
        {% else %}
        <br>
            The problem here
            {% for req in requests %}
                {% if req.to_profile == profile %}
                    <a href="{% url 'events:cancel_event_invite' event.id profile.id %}">Cancel</a>
                    <br>
                {% else %}
                    <a href="{% url 'events:invite_user_to_event' event.id profile.id %}">Invite to event</a>
                    <br>
                {% endif %}
            {% endfor %}
        {% endif %}
    </div>
    {% empty %}
        <p>No profiles yet</p>
    {% endfor %}
    
{% endblock %}

попробуйте сделать что-то вроде этого. models.py

class EventInviteRequest(models.Model):
    from_event = models.ForeignKey(Event, on_delete=models.CASCADE,
                                   related_name='from_event', blank=True,null=True)
    to_profile = models.ManyToManyField(Profile, on_delete=models.CASCADE,
                                   related_name='to_profile', blank=True,null=True)
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"From {self.from_event}"
  1. бег python manage.py makemigrations
  2. бег python manage.py migrate

views.py

def get_list_of_all_users(request, event_id):
    """Get list of all users"""
    event = Event.objects.get(id=event_id)
    profiles = Profile.objects.all()
    requests = EventInviteRequest.objects.filter(from_event=event)

    context = {'profiles': profiles, 'event': event, 'requests': requests}
    return render(request, 'events/invite_all_profiles_to_event.html', context)

в вашем шаблоне, где у вас возникли проблемы

{% for req in requests %}
                {% if profile in req.to_profile.all %}
                    <a href="{% url 'events:cancel_event_invite' event.id profile.id %}">Cancel</a>
                    <br>
                {% else %}
                    <a href="{% url 'events:invite_user_to_event' event.id profile.id %}">Invite to event</a>
                    <br>
                {% endif %}
            {% endfor %}
Вернуться на верх