亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django Pagination - 重新分組并顯示每頁的時間組?

Django Pagination - 重新分組并顯示每頁的時間組?

素胚勾勒不出你 2022-06-14 09:47:57
我目前正在重新組合一些數據,然后在列中顯示這些數據,同時還使用分頁。但是,由于原始數據的排序,在某些情況下,第 1 列有 1 個條目,但實際上總共有 5 或 6 個條目,但它們會在不同的頁面上,是否可以重新組合數據,以便每頁的項目是由分組項目的數量所占據的?我考慮過在將數據發布到頁面之前對數據進行排序,但那樣只會顯示每頁一列類型(可能有 1 或 n 個類型/列,id 喜歡在一頁上)注:以下樣本數據并非實際數據,下面的例子希望能讓事情更清楚原始數據:  ID       Type      Item----------------------------  9        Fruit     Apple      15       Meat      Beef      18       Fruit     Lemon      99       Fruit     Orange     9        Fruit     Grape      77       Meat      Chicken    分頁和分組數據當前輸出 Meat          Fruit-------       ------- Beef          Apple               Lemonpage 1 of 2 (3 items per page) Meat          Fruit-------       ------- Chicken       Orange               Grapepage 2 of 2 (3 items per page)期望的輸出 Meat          Fruit-------       ------- Beef          AppleChicken        Lemon               Orangepage 1 of 2 (3 items per group per page) Meat          Fruit-------       -------               Grapepage 2 of 2 (3 items per group per page)這是我當前的模板:{% include 'search/page_nav.html' %}{% with results.object_list as results_list %}    {% regroup results_list|dictsort:"model_name" by model_name as grouped_objects %}    {% for ct in grouped_objects %}        <div class="col-4">            <h3 class="text-capitalize">{{ ct.grouper }}'s</h3>            {% for result in ct.list %}            <div class="col-12 results">                <div class="pt-4 border-bottom">                    <a class="page-url h4 text-primary" href="{{ result.object.get_absolute_url }}">{{ result.object.get_search_title }}</a>                    <p class="page-description mt-1 text-muted"> {{ result.object.get_search_text|safe }}</p>                </div>            </div>            {% endfor %}        </div>    {% empty %}        <p class="lead">Although I am a guru, I am lacking sentience. One must ask a specific question to recieve a specific answer.</p>    {% endfor %}{% endwith %}{% include 'search/page_nav.html' %}
查看完整描述

1 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

我最終只是將 sqs 查詢發布到排序的 Django 模板,然后重新組合并使用查詢對每一列進行分頁。


下面的示例:


<div class="col-lg-12">

    <div class="row">

    {% if query %}

        {% regroup results|dictsort:"model_name" by model_name as grouped_objects %}

        {% for ct in grouped_objects %}

            <div class="col-6 col-lg-3">

                <h3 class="text-capitalize">{{ ct.grouper|friendly_search_name }}</h3>

                <ul id="pager_{{ ct.grouper }}" class="pagination-sm mt-1"></ul>

                <div id="pager_content_{{ ct.grouper }}">

                    {% for result in ct.list %}

                    <div class="col-12 results item">

                        <div class="pt-4 border-bottom">

                            <a class="page-url h4 text-primary" href="{{ result.object.get_absolute_url }}">{{ result.object.get_search_title }}</a>

                            <p class="page-description mt-1 text-muted"> {{ result.object.get_search_text|safe }}</p>

                        </div>

                    </div>

                    {% endfor %}

                </div>

            </div>

        {% empty %}

            <p class="lead">Although I am a guru, I am lacking sentience. One must ask a specific question to recieve a specific answer.</p>

        {% endfor %}

    {% else %}

        {# Show some example queries to run, maybe query syntax, something else? #}

    {% endif %}

    </div>

</div>

jQuery:


{% block extrajs %}

<script src="{% static 'scripts/twbs-pagingation/jquery.twbsPagination.js' %}" type="text/javascript"></script>

<script type="text/javascript">

window.jQuery(function(){

    var items_per_page = 4;

    function hide_all(child) {

        child.removeClass('active');   

    }

    function show_page(child, num, items_per_page) {

        hide_all(child);

        child.slice((num-1)*items_per_page, num*items_per_page).addClass('active');

    }

{% regroup results|dictsort:"model_name" by model_name as grouped_objects %}

{% for ct in grouped_objects %}   

    var $content_{{ ct.grouper }} = $('#pager_content_{{ ct.grouper }}');

    var $child_{{ ct.grouper }} = $content_{{ ct.grouper }}.children();

    $('#pager_{{ ct.grouper }}').twbsPagination({

        totalPages: Math.ceil($child_{{ ct.grouper }}.length/items_per_page),

        visiblePages: 5,

        onPageClick: function (event, page) {

            show_page($child_{{ ct.grouper }}, page, items_per_page);

        }

    });

{% endfor %}

});

</script>

{% endblock extrajs %}

{% block extrastyle %}

<style type="text/css">

.item {

    display: none;

}

.item.active {

    display: block;   

}

</style>

{% endblock extrastyle %}


查看完整回答
反對 回復 2022-06-14
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號