Я хочу изменить формат вывода списка Django - PullRequest
0 голосов
/ 22 сентября 2019

Я хочу изменить формат вывода списка Django.

Я хочу изменить формат вывода списка

Код представления выглядит следующим образом:

def team_todo_list(request, team_name):
    print("team_name : ", team_name)

    teamId = TeamInfo.objects.get(team_name = team_name).id
    team_leader_name = TeamInfo.objects.get(team_name = team_name).leader.username

    print("team_leader_name : ", team_leader_name)

    team_member = TeamMember.objects.filter(team=teamId)
    classification_list = Classification.objects.all()
    team_name= team_name

    member_array = []
    for member in team_member:
        # print(member.member.id) # nomad_coder, terecal
        member_array.append(member.member)

    team_todo_list = Todo.objects.filter(author__in=member_array)

    print('team_todo_list : ' , team_todo_list)
    print('team_member : ' , team_member)

    return render(request, 'todo/team_todo_list.html', {
        "team_todo_list":team_todo_list,
        "team_member_list":team_member,
        "classification_list":classification_list,
        "team_name":team_name,
        "team_leader_name": team_leader_name
    })

Код шаблона:

    <table class="table table-bordered" id="todo_list">
        <tr>
            <td>check</td>
            <td>class</td>
            <td>manager</td>
            <td>title</td>
            <td>remaining time</td>
            <td>deadline</td>
        </tr>

        {% if team_todo_list.exists %}
        {% for p in team_todo_list %}
        <tr>
            <td>
                <input type="checkbox" id="{{p.pk}}" class="td_check">
            </td>
            <td>{{p.classification}}</td>
            <td>{{p.author}}</td>
            <td>
                <a href="" id={{p.id}} class="title_for_list">
                    {{p.title}} (<font color="blue"> from {{p.director}}</font> )
                </a><br>
                <a class="badge badge-pill badge-dark" href="{% url "todo:todo_edit" p.id %}">modify</a>
            </td>
            <td>
                {% if p.dead_line %}
                {{p.remaining_time}}
                {% else %}
                {% endif %}
            </td>
            <td>{{p.dead_line}}</td>
        </tr>
        {% endfor %}
        <tbody id="tbody_todo"></tbody>
        {% else %}
        <tr>
            <td colspan="5">
                <h4>there is no article</h4>
            </td>
        </tr>
        {% endif %}

    </table>

В настоящее время в этом формате

текущий

Я хочу изменить его следующим образом.

после

Спасибо, что сообщили нам, как изменить представление или шаблон, чтобы изменить формат вывода списка.

Большое спасибо, что рассказали нам, как

проблема решается этим кодом

    <table class="table table-bordered" id="todo_list">


        {% regroup team_todo_list by author as author_list %}

        {% for author in author_list %}
            <tr>
                <td colspan="6">
                    <h4>
                        {{ author.grouper }}
                    </h4>
                </td>
            </tr>

            <tr>
                <td>체크</td>
                <td>분류</td>
                <td>담당</td>
                <td>title</td>
                <td>남은 시간</td>
                <td>마감 기한</td>
            </tr>

            {% for todo in author.list %}

            <tr>
                <td>
                    <input type="checkbox" id="{{todo.pk}}" class="td_check">
                </td>
                <td>{{todo.classification}}</td>
                <td>{{todo.author}}</td>
                <td>
                    <a href="" id={{p.id}} class="title_for_list">
                        {{todo.title}} (<font color="blue"> from {{todo.director}}</font> )
                    </a><br>
                    <a class="badge badge-pill badge-dark" href="{% url "todo:todo_edit" todo.id %}">수정</a>
                </td>
                <td>
                    {% if todo.dead_line %}
                        {{todo.remaining_time}}
                    {% else %}

                    {% endif %}
                </td>
                <td>{{todo.dead_line}}</td>
            </tr>
            {% endfor %}

        {% endfor %}

    </table>

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019

Мой ответ говорит о том, что с вашим views.py все в порядке.

  <table class="table table-no-border" id="todo_list">
     <thead>
        <tr>
            <th>check</th>
            <th>class</th>
            <th>manager</th>
            <th>title</th>
            <th>remaining time</th>
            <th>deadline</th>
        </tr>
      </thead>


      {% for p in team_todo_list %}
      <tbody>
         <tr>
            <td class="user">
                {{p.author}}
            </td>
         </tr>

         {% if team_todo_list.exists %}
         <tr>
            <td>
                <input type="checkbox" id="{{p.pk}}" class="td_check">
            </td>
            <td>{{p.classification}}</td>
            <td>{{p.author}}</td>
            <td>
                <a href="" id={{p.id}} class="title_for_list">
                    {{p.title}} (<font color="blue"> from {{p.director}}</font> )
                </a><br>
                <a class="badge badge-pill badge-dark" href="{% url "todo:todo_edit" p.id %}">modify</a>
            </td>
            <td>
                {% if p.dead_line %}
                {{p.remaining_time}}
                {% else %}
                {% endif %}
            </td>
            <td>{{p.dead_line}}</td>
         </tr>
         {% endfor %}

         {% comment %}
            I don't know what this tbody is for so I would comment it out
            <tbody id="tbody_todo"></tbody>
         {% comment %}

         {% else %}
         <tr>
            <td colspan="5">
                <h4>there is no article</h4>
            </td>
         </tr>
         {% endif %}

       </tbody>
     {% endfor %}
    </table>

Затем вы можете оформить свою таблицу CSS следующим образом:

.table-no-border {
    border-collapse: collapse;
    border: none;
}

th, td {
    border: 2px solid black;
}

.user{
    border:none;
    font-size: 1em;
    padding-top: 20px;
    padding-bottom: 20px;
}
  • Просто размещениецикл for, оператор if-else и незначительный css могут изменить внешний вид.
0 голосов
/ 22 сентября 2019

Вы можете использовать тег шаблона regroup , который позволяет группировать данные при рендеринге в шаблоне Django.Например:

{% regroup team_todo_list by author as author_list %}

{% for author in author_list %}
    <p>Author name: {{ author.grouper }}</p>
    {% for todo in author.list %}
        <p>Show your todo here {{ todo }}</p>
    {% endfor %}
{% endfor %}
  • author - это ключевое слово, которое вы хотите сгруппировать по
  • author_list - это список сгруппированных данных
  • .grouper это значение поля, по которому вы группируете
  • .list это список элементов, сгруппированных по полю

Надеюсь, что это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...