首页 > 解决方案 > 当显示用户列表时,我希望我最喜欢的用户的行的背景颜色为天蓝色。有没有有效的方法来做到这一点?

问题描述

我有一个问题~!

当显示用户列表时,我希望我最喜欢的用户的行的背景颜色为天蓝色。

但是,在打印用户模型时,为每一行再次运行循环太低效了。

有什么好的方法可以解决这个问题吗?

换句话说,如何在显示用户列表时让我最喜欢的用户行的背景颜色发生变化?

有没有一种好方法可以让我最喜欢的用户的行的颜色不同而无需进行太多查询?

如果有这样的方法

如果你让我知道,我将不胜感激

谢谢

关联

<a class="nav-link" href="/wm/userlist/byajax">User List</a>

下面是相关代码

网址

    path('userlist/byajax', views.user_list_for_memo_view.as_view(), name = 'user_list_for_memo'),

看法

class user_list_for_memo_view(ListView):
    paginate_by = 10

    def get_template_names(self):
        if self.request.is_ajax():
            return ['wm/_user_list_for_memo.html']
        return ['wm/user_list_for_memo.html']

    def get_queryset(self):
        query = self.request.GET.get('q')
        print("query : ", query)

        if query != None:
            object_list = User.objects.all().filter(Q(username__contains=query)).order_by('-profile__skill_note_reputation');
            return object_list
        else:
            print("user list 출력 확인 ===========================================================")
            object_list = User.objects.all().filter(profile__public="yes").order_by('-profile__skill_note_reputation');
            print("result : ", object_list)
            return object_list

模板(C:\django_inflearn2\wm\templates\wm_user_list_for_memo.html)

{% load static %}


{% if object_list.exists %}
    {% for u in object_list %}
        <tr>
            <td>{{u.id}}</td>
            <td id=user_name_{{u.id}}>

                <a href="/accounts/user_profile_information_view/{{u.username}}">
                    {{u.username}}
                </a
            </td>
            {% if u.username == request.user.username %}
            <td style="background-color:#DFF3FA">
                <input type="text" class="shortcut_subject_input_{{u.id}} form-control" value="{{u.profile.subject_of_memo}}"><br>
                <a href="" class="btn btn-outline-primary btn-sm update_memo_subject_btn float-right" data-id={{u.id}}>수정</a>
            </td>
            {% else %}
            <td>
                <input type="text" class="shortcut_subject_input_{{u.id}} form-control" value="{{u.profile.subject_of_memo}}">
            </td>
            {% endif %}

            <td>
                <a href="" class="btn btn-outline-dark move_to_user_btn btn-sm" id={{u.id}}>Id 선택</a>
            </td>
            <td>

                <a href="" class="btn btn-outline-dark btn-sm copy_to_me_from_user_id_btn" data-id={{u.id}} id={{u.username}}>
                    copy_to_me
                    <span class="" id="loading_for_copy_{{u.id}}" role="status" aria-hidden="true"></span>
                </a>

            </td>
            <td>
                <button type="button" class="plus_btn_for_user btn btn-outline-dark" data-author_id="{{u.id}}" data-my_id="{{request.user.id}}">
                    <img src="{% static 'icon/plus.png' %}" alt="">
                </button>
            </td>
            <td id="skill_note_point_{{u.id}}">
                {{ u.recommandationuseraboutskillnote_set.count }}
            </td>
        </tr>
    {% endfor %}
{% else %}
    <tr>
        <td colspan="4">
            <h4>no article</h4>
        </td>
    </tr>
{% endif %}

相关表

like table => 

class RecommandationUserAboutSkillNote(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    author_id = models.ForeignKey(User, on_delete=models.CASCADE, related_name="+")

user.profile table =>

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
    shortcut_user_id = models.CharField(default="me", max_length=40)
    selected_category_id = models.IntegerField(default=1, blank=True)
    team = models.ForeignKey(TeamInfo, on_delete=models.CASCADE, null=True, blank=True)
    position = models.CharField(max_length=50,default="member")
    subject_of_memo = models.CharField(max_length=60) 
    skill_note_reputation = models.IntegerField(default=0) 

标签: pythondjango

解决方案


您可以在模板中使用内联 if 语句。您的模板并不清楚您想要天蓝色的哪一行,所以为了清楚起见,这里是一个示例。

 <td style="background-color: {% if u.is_favorite %} sky-blue {% else %} not-sky-blue {% endif %}">
  ....
 </td>

推荐阅读