Как сделать вывод информации конкретного пользователя через цикл?

Domohod45

Новичок
Пользователь
Дек 7, 2021
68
3
8
Django.
У каждого пользователя есть профиль и на нем я хочу вывести название объекта, за который он проголосовал. Однако у меня получается вывести название выбора всех проголосовавших пользователей, а не конкретного, к которому принадлежит профиль. Как это делать?

views.py:
Python:
class Profile(TemplateView):
    template_name = 'registration/profile.html'

    def get(self, request, username):
        values = Choose.objects.all() 
        user = get_object_or_404(User, username=username)
        return render(request, self.template_name, {"profile": user, "values": values})

profile.html:
HTML:
{% for u in values %}
        {% if u.count_black %}
            <h2 class="text_color_light" align="center">
                <p align="center">Voted for black</p>
            </h2>

        {% elif u.count_white %}
            <h2 class="text_color_light" align="center">
                <p align="center">Voted for white</p>
            </h2>

        {% elif u.count_purple %}
            <h2 class="text_color_light" align="center">
                <p align="center">Voted for purple</p>
            </h2>
        <!-- выводятся все пользователи-->
        {% endif %}
        {% endfor %}
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Однако у меня получается вывести название выбора всех проголосовавших пользователей, а не конкретного, к которому принадлежит профиль. Как это делать?
Вот так можно:
Python:
class Profile(TemplateView):
    template_name = 'registration/profile.html'

    def get(self, request, username):        
        # получаем пользователя по username если он существует
        user = get_object_or_404(User, username=username)
        
        # получаем объект голосования (Choose)
        # если пользователь не голосовал будет None
        choose = Choose.objects.filter(voter=user).first()
        return render(request, self.template_name, {'profile': user, 'choose': choose})
profile.html
HTML:
<h1>Профиль пользователя {{ profile }}</h1>
{% if choose.count_black %}
    <h2 class="text_color_light" align="center">
        <p align="center">Voted for black</p>
    </h2>

{% elif choose.count_white %}
    <h2 class="text_color_light" align="center">
        <p align="center">Voted for white</p>
    </h2>

{% elif choose.count_purple %}
    <h2 class="text_color_light" align="center">
        <p align="center">Voted for purple</p>
    </h2>
{% endif %}
 
Последнее редактирование:
  • Мне нравится
Реакции: Domohod45

Форум IT Специалистов