【问题标题】:Display just 3 records instead of all in django在 django 中只显示 3 条记录而不是全部
【发布时间】:2020-05-18 11:06:47
【问题描述】:

我想从模型中显示三个记录和随机三个记录。但如果我这样做,

   {% for service in services.all %}
        {{service.title}}<br/>
        {{service.summary}}<br/>
   {% endfor %}

它显示所有记录。

我需要做什么来显示来自数据库 Django 模型的三个 3 记录?

【问题讨论】:

    标签: python django python-3.x django-models rendering


    【解决方案1】:

    简单地对查询集进行切片

    {% for service in services.all|slice:"0:3" %}
    

    从查询集中获取前 3 个值。

    如果需要随机,请使用

    services = MOdel.objects.all().order_by('?')
    
    
    {% for service in services | slice:"0:3" %}
    

    在视图中并将其传递给上下文或试试这个

    {% for service in services.all | slice:"0:3" | dictsort:"?" %}
    

    【讨论】:

    • The docs 警告 order_by('?') 可能会很慢,但如果您没有很多服务,那么它在实践中可能工作正常。
    • 如果在视图中随机化,不妨同时切片:.order_by('?')[:3]
    • 谢谢大家,但是@Alasdair 和@Adharsh 您的建议对我来说非常有用。但是@Adharsh 当我这样做时{% for service in services.all|slice:"0:3" %} 它给了我这个错误slice requires 2 arguments, 1 provided 现在缺少哪个参数?
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    相关资源
    最近更新 更多