Django

2010-04-30 5 views
13

का उपयोग कर एक बार में कई रिकॉर्ड अपडेट करना मैं बाईं तरफ चेकबॉक्स के साथ रिकॉर्ड की एक सूची बनाना चाहता हूं .... कृपया जीमेल में इनबॉक्स की तरह। फिर यदि कोई उपयोगकर्ता इनमें से कुछ या सभी चेकबॉक्स का चयन करता है, तो चयनित रिकॉर्ड (ओं) को अपडेट किया जा सकता है (संभवतः एक फ़ील्ड बीटीडब्लू अपडेट किया जाएगा), संभवतः एक बटन पर क्लिक करके।Django

मैं इस पर कैसे अटक गया हूं .... विचार?

प्रदर्शन कोड

{% for issue in issues %} 
    <tr class="{% cycle 'row1' 'row2' %}"> 
     <td><input name="" type="checkbox" value="{{ issue.id }}" /></td> 
     <td>{{ issue.description }}</td> 
     <td>{{ issue.type }}</td> 
     <td>{{ issue.status }}</td> 
     <td>{{ issue.date_time_added|date:"d, M Y" }}</td> 
     <td>{{ issue.added_by }}</td> 
     <td>{{ issue.assigned_to }}</td> 
    </tr> 
{% endfor %} 

उत्तर

26

Use the queryset update() method:

id_list = list_of_ids_from_checkboxes 
MyModel.objects.filter(id__in=id_list).update(myattribute=True) 

आपके प्रदर्शन एचटीएमएल चेक बॉक्स के लिए एक name मान अनुपलब्ध है। यदि आपके पास सभी चेकबॉक्स में एक ही नाम है, तो आईडी की सूची एक एकल POST चर में पारित की जाएगी, जिसे आप सीधे request.POST से प्राप्त कर सकते हैं (मान लीजिए कि आप एक पोस्ट के रूप में अपना फॉर्म सबमिट कर रहे हैं, जो आपको होना चाहिए):

id_list = request.POST.getlist('checkboxname') 
+0

मेरी मुख्य समस्या चेकबॉक्स के साथ है .... क्षमा करें मैं उस बिट का उल्लेख करना भूल गया .... मैं चयनित आईडी के साथ कैसे पास करूं? – Stephen

+0

आप चेकबॉक्स कैसे बना रहे हैं? –

+7

अद्यतन() विधि बहुत उपयोगी है, बस सुनिश्चित करें कि आप एक महत्वपूर्ण चेतावनी के बारे में जानते हैं! अगर आपके पास अपने प्रभावित मॉडल (ओं) और/या pre_save/post_save सिग्नल हैंडलर पर कस्टम सेव() विधि है, तो उन्हें कॉल नहीं किया जाएगा। –