2010-02-10 10 views
10

एक फॉर्मेट क्षैतिज रूप से प्रस्तुत करने का Django तरीका क्या है, यानी प्रति पंक्ति एक पंक्ति? As_table विधि कई रूपों को लंबवत (लेबल के साथ) उत्पन्न करता है। मुझे टेबल पंक्तियों (फार्म प्रति एक पंक्ति) में फॉर्म फ़ील्ड चाहिए और लेबल शीर्ष पर होना चाहिए। मुझे बॉक्स से कुछ भी नहीं दिख रहा है। क्या यह किसी कारण से निराश है?डीजेगो फॉर्मेट में क्षैतिज (प्रति पंक्ति) रूप

मुझे यह स्पष्ट करना चाहिए कि मैं वास्तव में एक तालिका तालिका विजेट के कारण एक तालिका चाहता हूं। और उस तालिका में लेबल होना चाहिए।

तो मेरी वांछित संरचना होती है:

<table> 
    <thead> 
    <tr><th>column1</th><th>column2</th></tr> 
    </thead> 
    <tbody> 
    <tr><td>form1.value1</td><td>form1.value2</td></tr> 
... 
    </tbody> 
</table> 

उत्तर

21

तुम मेरे स्पष्टीकरण देखें इस http://www.djangosnippets.org/snippets/1442/

{{ formset.non_form_errors.as_ul }} 
<table id="formset" class="form"> 
{% for form in formset.forms %} 
    {% if forloop.first %} 
    <thead><tr> 
    {% for field in form.visible_fields %} 
    <th>{{ field.label|capfirst }}</th> 
    {% endfor %} 
    </tr></thead> 
    {% endif %} 
    <tr class="{% cycle row1,row2 %}"> 
    {% for field in form.visible_fields %} 
    <td> 
    {# Include the hidden fields in the form #} 
    {% if forloop.first %} 
     {% for hidden in form.hidden_fields %} 
     {{ hidden }} 
     {% endfor %} 
    {% endif %} 
     {{ field.errors.as_ul }} 
     {{ field }} 
    </td> 
    {% endfor %} 
    </tr> 
{% endfor %} 
</table> 
+5

हाँ, यह करता है। यह आपके टेम्पलेट्स में डालने की एक क्रिया है। कुछ वर्बोज़ के साथ, आप इसे एक as_table- जैसी विधि के रूप में चाहते हैं या आप पैरामीटर के साथ टेम्पलेट्स को कॉल करने की क्षमता चाहते हैं (न केवल उन्हें शामिल करें)। मैं वास्तव में हैरान हूं कि Django के रूप में परिपक्व कुछ ऐसा बॉक्स से बाहर नहीं है। – kmt

+4

मैं इसे आम तौर पर एक जेनेरिक टेम्पलेट (formet_table.html के रूप में सहेजा गया) के रूप में जोड़ता हूं, फिर प्रत्येक फॉर्मेट टेम्पलेट के लिए मैं पास करता हूं {% में "formet_table.html"%} शामिल है, लेकिन मैं मानता हूं कि यह अच्छा होगा कि इसे बिल्टिन विधि के रूप में प्रस्तुत किया जा सके । – Dave

+2

मैं वही कर रहा हूं। और क्योंकि मेरे पास ऐसे कई रूपों वाला एक पृष्ठ है, मैं इसे पैरामीटर करने के लिए टैग के साथ उपयोग करके समाप्त कर चुका हूं। – kmt

6

मैं form.as_ul उपयोग करने का सुझाव और अपने सीएसएस के साथ स्टाइल एक पंक्ति पर यह सब कर सकते हैं। यदि आप सभी यूएल को इस तरह से प्रभावित नहीं करना चाहते हैं तो आप ul li { display: inline; } या निश्चित रूप से कक्षा या आईडी को प्रतिस्थापित कर सकते हैं।

यहाँ Django डॉक्स के प्रासंगिक अनुभाग है: http://docs.djangoproject.com/en/dev/topics/forms/#displaying-a-form-using-a-template

संपादित करें: एक मेज के लिए अपनी जरूरत को संबोधित करने के लिए, आप चाहें तो इस ... कुछ और संपादित की तरह कुछ करना चाहते हैं।

इन सभी रूपों को एक तालिका में रखना मुश्किल है, और अभी भी वैध HTML है। एक फॉर्म तत्व एक टेबल को घेर सकता है, या <td> के अंदर हो सकता है ... हालांकि यह अभी भी काम करेगा। कृपया

<thead> 
    <tr> 
    {% for field in form %} 
    <th>{{ field.label }}</th> 
    {% endfor %} 
    </tr> 
</thead> 

<tbody> 
<tr class="table_row"> 
    <form action="/something/" method="post"> 
    {% for field in form %} 
     <td> 
     <table> 
     <tr><td>{{ field.label }}</td></tr> 
     <tr><td>{{ field }}</td></tr> 
     </table> 
     </td> 
    {% endfor %} 
    </form> 
    </tr> 
</tbody> 
+0

की तरह कुछ करने की कोशिश करना चाहते हो सकता है। मैं वास्तव में * एक टेबल * की जरूरत है। – kmt

+0

मुझे लगता है कि आपको अपने टेम्पलेट में अनुकूलन के साथ जाना होगा, फिर, स्वचालित रूप से HTML उत्पन्न करने वाली विधियों का उपयोग करने के बजाय। फिर आप इसे सभी को ' 'में डाल सकते हैं। – JAL

+0

मैं आपका अपडेट देखता हूं। धन्यवाद! लेकिन, ठीक है, मुझे सभी पंक्तियों के ऊपर में लेबल की आवश्यकता है, प्रत्येक पंक्ति के लिए दोहराना नहीं। मुझे मूल रूप से एक रिकॉर्डसेट की तालिका प्रस्तुत करने की आवश्यकता है। यह आश्चर्यजनक लगता है कि मुझे यह गुगल नहीं मिला। – kmt

संबंधित मुद्दे