आप सूची ऑब्जेक्ट को साइड साइड की बजाए कैसे सीमित करते हैं


83

वस्तुओं को सीमित करने के तरीकों में से एक इस तरह एक समारोह में एक सीमा जोड़ना है

def ten_objects():
    obj = Model.objects.all()[0:10]  # limit to 10
    return {'objects': obj}

हालाँकि आप इसे एक दृश्य के अंदर के बजाय एक टेम्पलेट के अंदर कैसे प्राप्त करते हैं?

मुझे पता है कि आप एक टेम्प्लेट के भीतर वस्तुओं के माध्यम से फ़िल्टर कर सकते हैं और वर्णों को सीमित कर सकते हैं लेकिन आप वास्तव में लूप में प्रदर्शित वस्तुओं की मात्रा को कैसे सीमित करते हैं। खाका। उदाहरण के लिए सभी वस्तुओं के माध्यम से निम्न कोड लूप होगा ...।

    <ul>
     {% for new in news %}
      <li>
       <p>{{ news.title }}</p>
       <p>{{ news.body }}</p>
      </li>
     {% endfor %}
    </ul>

मैं पाश कैसे तोड़ता हूं, 3 वस्तुओं / वस्तुओं के बाद कहते हैं। और मैं इसे टेम्पलेट के अंदर कैसे करता हूं। अग्रिम में धन्यवाद।


जवाबों:


178

एक sliceफिल्टर है जिसे आप टेम्प्लेट में उपयोग कर सकते हैं। यह देखने के भीतर टुकड़ा करने की क्रिया के समान है।

{% for new in news|slice:":10" %}

2
यदि आपके पास एक परिदृश्य है जहां आप उपयोग कर रहे हैं तो आप उपयोग {% for object in user.objects.all %} कर सकते हैं{% for object in user.objects.all|slice:":10" %}
समीर तेंदुलकर

कृपया मुझे django के स्लाइस प्रलेखन लिंक दें।
स्क्वाड

1
यह सचमुच मेरे उत्तर के ऊपर से जुड़ा हुआ है।
डैनियल रोजमैन

मुझे वह @ डैनियल मिल गया। मैं github django रिपॉजिटरी में स्लाइस खोजता हूं, लेकिन मुझे स्लाइस_फिल्टर नहीं स्लाइस लगता है।
स्क्वाल

12

आप स्लाइस का उपयोग करना चाहते हैं टेम्पलेट फ़िल्टर

इसका उपयोग करने के लिए यहां आपका उदाहरण बदल दिया गया है:

<ul>
{% for new in news|slice:":3" %}
<li>
<p>{{ new.title }}</p>
<p>{{ new.body }}</p>
</li>
{% endfor %}
</ul>

1
मुझे पता है कि मैं एक तरह से पागल हूँ, लेकिन यह होना चाहिए: {{ new.title}}और {{ new.body }}
हुसाम

यह स्वीकृत उत्तर की तुलना में अधिक पूर्ण कोड उदाहरण है, यह एक अधिक उपयोगी उत्तर है, इसलिए मैंने उत्थान किया और समझा रहा हूं कि क्यों
कीथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.