Dzień drugi mojego nowego życia z Django, proszę wybaczyć prostotę mojego pytania.Nowość: Django: dodawanie wyników do Queryset przed przekazaniem do szablonu
Mam istniejącej tabeli dB (dostęp tylko do odczytu), że z powodzeniem wyświetlaną zawartość na stronie internetowej za pomocą adresów URL, widoki, modele i wszystkie te dobre rzeczy.
Wyzwanie, które mam, to tabela, która nie zawiera wszystkich informacji, które muszę wyświetlić. Tabela zawiera wyniki testu z kolumnami, sampletime, samplevalue, sampleresult. Muszę wyświetlać różne dane w oparciu o to, co obliczam z tych kolumn.
mój koniec celem jest, aby wyświetlić te informacje jako wykres szeregów czasowych z wykorzystaniem flotr. Na razie Id być szczęśliwy po prostu zrzucić do potrzebnych danych do tabeli na stronie internetowej. (Więc mogę wizualizować dane wynikowe)
Co Id jak przejść do szablonu jest
- jssampletime (obiekt sampletime datetime konwertowane do javascript epoki ms)
- resultValue (rolling sumę + - z samplevalue na podstawie tego, czy sampleresult było dobre lub złe)
jestem zadowolony z tworzeniem jssampletime i resultva lue za pomocą funkcji def. Zakładam, że dodałabym te funkcje do views.py
Domyślam się, co muszę zrobić iteracji na querySet w views.py i przechowywać wyniki na liście słowników, które przekazuję do szablonu. Coś takiego (kod nie testowany).
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 %}
myślę, że to będzie działać, ale nie jestem pewien, czy to jest droga Django MVC.
Czy to prawda, że ja
- obliczyć wynik muszę w views.py przez interating nad wyniku queryset?
- przekazać mój wynik szablonu jako listy dict (to queryset ponad to)?
Chyba szukam wskazówek dotyczących kierunku i kodu. Czy jestem na dobrej drodze? Czy istnieje lepszy sposób?
doskonała. Twoja odpowiedź rzuci więcej światła na modele i zestawy zapytań. Zaczynam teraz robić to Django. Małe kroki. Mam teraz dane potrzebne do wyświetlenia na podstawowej stronie internetowej. Dzięki Cory, dziewięciolatek –
pewna rzecz, cieszę się, że pomogło. nie zapomnij, że możesz zaakceptować odpowiedź ...;) – Cory