Условие для проверки, находится ли пользователь в модели, и для блокировки перед повторной регистрацией

#python #django

#python #django

Вопрос:

Привет, у меня проблема с написанием условия, которое проверяет, находится ли вошедший в систему пользователь в настоящее время в списке зарегистрированных пользователей, и блокирует его повторную регистрацию, и если он есть в списке, это разблокирует мой доступ к турнирному переходу.

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

 def groups(request, pk):
    tournament_groups = get_object_or_404(TournamentGroup, pk=pk)
    tournament_users = TournamentUsers.objects.filter(user_group=tournament_groups)
    judges = TournamentJudges.objects.filter(user_tournament=tournament_groups.tournament_name)
    tournament = Tournament.objects.get(tournament_name=tournament_groups.tournament_name)
    form = TournamentUsersForm()
    current_user = request.user.debatants
    if request.user.is_authenticated:
        form = TournamentUsersForm(
            initial={'user_tournament': tournament_groups.tournament_name,
                     'user_group': tournament_groups,
                     'user_full_name': current_user})
    if request.method == "POST":
        form = TournamentUsersForm(request.POST)
        if form.is_valid():
            form.save()
            form = TournamentUsersForm()

    context = {'tournament_groups': tournament_groups,
               'tournament_users': tournament_users,
               'form': form, 'judges': judges,
               "tournament": tournament,
               'current_user': current_user,}
    return render(request, 'ksm_app2/groups.html', context)
  

это мой models.py файл

 
class TournamentUsers(models.Model):
    user_full_name = models.ForeignKey(Debatants, on_delete=models.SET_NULL, null=True)
    user_tournament = models.ForeignKey(Tournament, on_delete=models.SET_NULL, null=True)
    user_group = models.ForeignKey(TournamentGroup, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return str(self.user_full_name.id)

  

это мой шаблон

        {% for tournament_user in tournament_users %}
            {% if current_user.id == tournament_user.user_full_name.id %}
                <h2>Jesteś już zapisany</h2>
            {% else %}
                <h2>Zapisz się jako uczestnik</h2>
                <form method="post" style="visibility: hidden"><br>
                    <button type="submit" style="visibility: visible!important">Zapisz się</button>
                    {% csrf_token %}
                    <label for="name">Imię i nazwisko</label>
                    {{ form.user_full_name }}
                    <label for="tournament">Wybierz turniej</label>
                    {{ form.user_tournament }}
                    <br>
                    <label for="tournament">Wybierz drużyne</label>
                    {{ form.user_group }}
                    <br>
                </form>
            {% endif %}
        {% endfor %}

  

Я попытался написать условие в шаблоне html, но я не знаю, как я могу проверить, есть ли, например, идентификатор зарегистрированного пользователя в модели, единственное, что я сделал на этом этапе, что работает неправильно, — это написать цикл для всех пользователей и их идентификаторов и сравнить их с зарегистрированным пользователемИдентификатор. Цикл работает некорректно, потому что он соглашается только тогда, когда есть только один пользователь, с которым он согласен для другого, он уже выдает подделку. Кто-нибудь сможет сказать, как я могу это исправить.
Я был бы признателен за любые советы

Комментарии:

1. внутри вашего шаблона tournament_users forloop если вы добавляете <h1>{{ tournament_user.user_full_name.id }}</h1> внутри своего forloop, какой результат вы получаете?

2. идентификатор текущего пользователя, который вошел в систему

3. не могли бы вы прислать мне какой-либо идентификатор этого кода <h1>{{ tournament_user.user_full_name.id }}</h1>

4. <h1>{{ tournament_user.user_full_name.id }}</h1> = 47

5. каков результат этого? {{ current_user.id }}