Есть ли в Django способ ограничить пользователя в регистрации на событие только один раз?

Я новичок в Django, пытаюсь создать сайт, позволяющий людям регистрироваться на футбольные матчи.

На данный момент пользователь может зарегистрироваться несколько раз на один и тот же матч, что, очевидно, не идеально! Есть ли способ определить, зарегистрировался ли уже пользователь, вошедший в систему, и заменить кнопку регистрации сообщением о том, что он уже зарегистрировался? Я предполагаю, что мне нужно какое-то булево значение в представлении EventDetail, а затем я могу сделать условный оператор в шаблоне, но я не знаю, как это реализовать. Надеюсь, вопрос понятен, это мой самый первый пост!

views.py:

class EventDetail(View):
    def get(self, request, id, *args, **kwargs):
        event = get_object_or_404(Event, pk=id)
        registrations = Registration.objects.filter(event=event)
        total_participants = 0
        for person in registrations:
            total_participants += 1
            if person.guest:
                total_participants += 1
        remaining_spaces = event.max_participants - total_participants
        template = "event_detail.html"
        context = {
            "event": event,
            "total_participants": total_participants,
            "registrations": registrations,
            "remaining_spaces": remaining_spaces,
        }
        return render(request, template, context)

шаблон

{% extends "base.html" %}

{% block content %}

<p>{{ event.title }}</p>
<p>{{ total_participants }} / {{ event.max_participants }} ({{ remaining_spaces }} spot{{ remaining_spaces|pluralize }}
    remaining!)</p>
{% if total_participants < event.max_participants %}
<a href="{% url 'event_registration' event.id %}" class="btn">Register</a>

{% else %}
<p>This event has filled up.</p>
{% endif %}

<h2>Current Participants</h2>
<ul>
    {% for person in registrations %}
    <li>
        {{ person.name }}
        {% if person.guest %}
        +1
        {% endif %}
    </li>
    {% endfor %}
</ul>

{% endblock %}
Вернуться на верх