【问题标题】:Display specific number of random items in array with For loop使用 For 循环显示数组中特定数量的随机项
【发布时间】:2020-10-30 05:16:09
【问题描述】:

我正在使用 django 中的模板,试图从相关对象数组中显示特定数量的随机项

现在我显示数组中的所有项目我可以进行哪些更改

 {%  for pdt in object.pdt_set.all  %}
    <div class="ps-product ps-product--simple">
            <div class="ps-product__thumbnail">
              <a href="{% url 'pdtdetail' pdt.id %}"><img src="{{ pdt.image.ur }}"alt=""></a>
              <div class="ps-product__badge">-16%</div>
              <ul class="ps-product__actions">
                <li><a href="#" data-toggle="tooltip" data-placement="top" title="Read More"><i
                      class="icon-bag2"></i></a></li>
                <li><a href="#" data-placement="top" title="Quick View" data-toggle="modal"
                    data-target="#product-quickview"><i class="icon-eye"></i></a></li>
                <li><a href="#" data-toggle="tooltip" data-placement="top" title="Add to Whishlist"><i
                      class="icon-heart"></i></a></li>
                <li><a href="#" data-toggle="tooltip" data-placement="top" title="Compare"><i
                      class="icon-chart-bars"></i></a></li>
              </ul>
            </div>
            <div class="ps-product__container">
              <div class="ps-product__content" data-mh="garden"><a class="ps-product__title"
                  href="product-default.html">{{ pdt.name  }}</a>
                <div class="ps-product__rating">
                  <select class="ps-rating" data-read-only="true">
                    <option value="1">1</option>
                    <option value="1">2</option>
                    <option value="1">3</option>
                    <option value="1">4</option>
                    <option value="2">5</option>
                  </select><span>01</span>
                </div>
                <p class="ps-product__price sale">$ {{ pdt.price }} </p>
              </div>
            </div>
          </div>
 {% endfor %}

【问题讨论】:

    标签: python arrays django


    【解决方案1】:

    由于您正在使用此查询集:{% for pdt in object.pdt_set.all %}

    您所要做的就是将其随机化并限制您选择的结果数量

    {% for pdt in object.pdt_set.order_by('?').limit(5) %}

    {% for pdt in object.pdt_set.order_by('?')[:5] %}

    用你想要的任意多的记录替换 5

    见:

    How to pull a random record using Django's ORM?

    Django - limiting query results

    【讨论】:

    • 好的,但根据那些帖子,他们说速度很慢,你怎么看? @AayushAgrawal
    • 编程中有一个古老的原则——“请求原谅比请求许可更好”试试看。如果感觉很慢,请不要使用它。如果 pdt_set 有数百万或数十亿条记录,这只会很慢,而且我觉得这里可能不是这种情况:)
    • 一直无法解析剩余部分:'('?')[:5]' 错误任何想法
    • @JordanRob 这是由 Jinja2 试图阻止函数执行引起的。如果您从视图中传递整个变量 object.pdt_set.order_by('?')[:5] 而不是在模板中进行评估,它应该可以解决问题
    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 2017-09-03
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多