2009-09-27 10 views
7

पर जाने से पहले प्रश्नोत्तरी में गणना परिणाम जोड़ना Django के साथ मेरा नया जीवन दो दिन, कृपया मेरे प्रश्न की सादगी से क्षमा करें।न्यूबी: डीजेगो: टेम्प्लेट

मेरे पास एक मौजूदा डीबी तालिका (केवल पढ़ने योग्य पहुंच) है जिसे मैंने यूआरएल, विचार, मॉडल और सभी अच्छी चीजों का उपयोग करके वेबपृष्ठ पर सफलतापूर्वक प्रदर्शित किया है।

मेरे पास चुनौती है तालिका में सभी सूचनाएं शामिल नहीं हैं जिन्हें मुझे प्रदर्शित करने की आवश्यकता है। तालिका में कॉलम, नमूना समय, नमूनाव्यू, नमूना के साथ परीक्षण परिणाम होते हैं। मुझे उन कॉलम से गणना करने के आधार पर अलग-अलग डेटा प्रदर्शित करने की आवश्यकता है।

मेरा अंतिम लक्ष्य flotr का उपयोग करके एक समय श्रृंखला ग्राफ के रूप में इस जानकारी को प्रदर्शित करना है। अभी के लिए ईद सिर्फ डेटा मैं एक वेब पेज पर एक मेज की जरूरत डंप के लिए खुश हो। (इसलिए मैं परिणामी डेटा कल्पना कर सकते हैं)

क्या ईद टेम्पलेट को पारित करने के लिए की तरह है,

  • jssampletime (sampletime datetime वस्तु जावास्क्रिप्ट युग में बदल जाती एमएस)
  • resultvalue (रोलिंग योग + - samplevalue की है कि क्या sampleresult अच्छा है या बुरा था आधारित)

मैं jssampletime और resultva बनाने से मुझे कोई आपत्ति डीई कार्यों का उपयोग कर लुई। मुझे लगता है कि मैं इन कार्यों को Views.py

मुझे लगता है कि मुझे क्वेरी पर पुन: प्रयास करने की आवश्यकता है ..py.py में सेट करें और परिणाम को टेम्पलेट में पास किए गए शब्दकोशों की एक सूची में संग्रहीत करें। ऐसा कुछ (कोड परीक्षण नहीं किया गया)।

views.py

# views.py 
# Sudo code to assit in asking the question 
from django.shortcuts import render_to_response 
from thing.reporter.models import Samples 

def _datetime_to_js(sampletime): 
    #.. date conversion epoch magic 
    return jsd_result 

def _rolling_sum(samplevalue,sampleresult): 
    #.. summing magic 
    return sum_result 

def dumptable(request): # The def that is called by urls.py 
    object_list = Samples.objects.all() 

    list_for_template = [] 
    for row in object_list: 
     jssampletime = _datetime_to_js(row.sampletime) 
     resultvalue = _rolling_sum(row.samplevalue,row.sampleresult) 
     list_for_template.append({'jssampletime':jssampletime,'resultvalue':resultvalue}) 

    return render_to_response('tabledump.html', {'result_list': list_for_template}) 

tabledump.html

# tabledump.html template 
{% block content %} 
    <h2>Results dumped to page for testing</h2> 
    <ul> 
    <table> 
    {% for result in result_list %} 
     <tr> 
     <td>{{ result.jssampletime }}</td> 
     <td>{{ result.resultvalue }}</td> 
     </tr> 
    {% endfor %} 
    </table> 
    </ul> 
{% endblock %} 

मुझे लगता है कि यह काम करेगा लेकिन मैं यकीन नहीं अगर यह Django MVC तरीका है।

यह सही है कि मैं है,

  • परिणाम मैं एक क्वेरीसमूह परिणाम पर interating द्वारा views.py में जरूरत की गणना?
  • मेरे परिणाम को टेम्पलेट में की सूची के रूप में पास करें (क्या एक क्वेरीसेट से अधिक है)?

मुझे लगता है कि मैं कुछ दिशा और कोड युक्तियों की तलाश में हूं। क्या मैं सही रास्ते पर हूं? क्या कोई बेहतर तरीका है ?

उत्तर

15

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

उदा।

class MyModel(models.Model): 
    model_field = models.CharField(max_length=255) 

    @property 
    def calculated_field(self): 
     return self._do_calculation(self.model_field) 

आप अपने पाश में राज्य चर के लिए उपयोग की जरूरत है, मत भूलना कि तुम एक अजगर वस्तु के लिए किसी भी संपत्ति संलग्न कर सकते हैं। यह बेहद उपयोगी हो सकता है।

for row in object_list: 
    # update some variable we want to use in the template 
    row.newly_added_field = run_calculation(row, somevariable) 

इन दोनों फिर टेम्पलेट से पहुंचा जा सकता है::

{% for result in result_list %} 
    <tr> 
    <!-- some stuff that displays the model directly --> 
    <td>{{ result.calculated_field}}</td> 
    <td>{{ result.newly_added_field}}</td> 
    </tr> 
{% endfor %} 
+0

बढ़िया तो अपने ध्यान में रखते हुए आप की तरह कुछ हो सकता था। आपके उत्तर ने मॉडल और क्वेरीसेट पर अधिक प्रकाश डाला है। मैं अब यह Django बात शुरू कर रहा हूँ। छोटे कदम। अब मुझे डेटा मिला है जो मुझे मूल वेब पेज पर प्रदर्शित होने की आवश्यकता है। धन्यवाद कॉरी, नौ ब्लेड –

+0

निश्चित बात, खुशी हुई इससे मदद मिली। भूलें कि आप जवाब स्वीकार कर सकते हैं ...;) – Cory

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