Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Веб-разработка и фреймворки > как сделать выборку объектов в Django


Автор: skorpiks 13.4.2010, 15:24
Я делаю сайт, на котором отображаются метеоданные (температура, давление, влажность).
Мне нужно создать отдельные старницы на которых будет отображаться температура, давление и влажность за указанные сутки.

вот файл с описанием моделей (models.py):
Код
from django.db import models
class Parametr(models.Model):
    measuring = models.CharField(max_length=35)

    def __unicode__(self):
        return self.measuring
    class Meta:
        ordering = ['measuring']
    class Admin:
        pass

class DTValue(models.Model):
    dt_value = models.DateTimeField(null = False, unique = True)

    def __unicode__(self):
        return str (self.dt_value)
    class Meta:
        ordering = ['dt_value']
    class Admin:
        pass

class Znachenie(models.Model):
    dt_value = models.ForeignKey(DTValue, null = False)
    sensor = models.ForeignKey(Parametr, null = False)
    value = models.FloatField(null = False)

    def __unicode__(self):
        return str (self.value)
    class Meta:
        ordering = ['id', 'sensor']
    class Admin:
        list_display = ('value', 'sensor', 'dt_value')


вот файл представлений (views.py):
Код
from django.http import HttpResponse
from myproject.pogoda.models import Parametr, DTValue, Znachenie

def all_znach(request):
    now = Znachenie.objects.filter(sensor__measuring="Temperatyra").latest('dt_value')
    html = "<html><body> </body></html>" % now
    return HttpResponse(html)


пытаюсь вывести все значения температуры с помощью 
Код
now = Znachenie.objects.filter(sensor__measuring="Temperatyra").all()

и в результате получаю [, , , , , , ]
всётаки как можно вывести все значения одного параметра?

Автор: skorpiks 15.4.2010, 17:09
Подскажите как найти сумму полученных значений. У меня такой код:
Код
def all_temperatyra(request):
temper = Znachenie.objects.filter(sensor__measuring="Temperatyra")
return render_to_response('all_temperatyra.html', {'temper':temper})

шаблон all_temperatyra.html выглядит так:
Код
вся температура
{% for temperature in temper %}
<table><tbody><tr><td> {{ temperature }} °C </td></tr></tbody></table>
{% endfor %}

Нужно найти сумму значений temper

Автор: Stolzen 7.4.2011, 11:15
1) В джанго запросы "ленивые" - данные запрашиваются только тогда, когда идет обращение к полям объекта. Поэтому если выборка данных была сделана в другой функции, они могут потеряться и в ответе будет что-то типа [, , , , , , ].

2) В джанго нельзя реализовывать логику в шаблонах. Т.е. сумму нужно посчитать в вашем методе, и ее передать в шаблон.

Добавлено через 1 минуту и 20 секунд
Упс... дату не заметил. smile  Спустя год ответ, наверное, уже был найден?  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)