Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » как объединить несколько objects.all ?? аналог JOIN в Django [RSS Feed]

#1 Май 12, 2008 09:36:06

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как объединить несколько objects.all ?? аналог JOIN в Django

Всем привет,
подскажите как
есть код модели:

class sensor_type(models.Model):
measuring = models.CharField(max_length=35)#измеряемая величина
unit = models.CharField(max_length=10)#единица измерения
def __unicode__(self):
return self.measuring
class Meta:
ordering = ["measuring"]
class Admin:
pass

class measuring_datetime(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 measuring_value(models.Model):
dt_value = models.ForeignKey(measuring_datetime, null=False)
sensor = models.ForeignKey(sensor_type, null=False)
value = models.FloatField(null=False)
def __unicode__(self):
return str(self.value)
class Meta:
ordering = ["id"]
class Admin:
list_display = ('value', 'sensor', 'dt_value')
search_fields = ('dt_value',)
pass
мне нужно отобразить последние данные (по measuring_datetime.dt_value) для этого
def show_weather(request):
dt_value = measuring_datetime.objects.latest('dt_value')
id_last = dt_value.id
measuring_value_last = measuring_value.objects.filter(dt_value=id_last)#список последних значений
sensor_list = sensor_type.objects.all()#список датчиков
print "measuring_value_last %s"%measuring_value_last
return render_to_response('show_weather.html', {'datetime': dt_value
, 'measuring_value': measuring_value_last
, 'sensor': sensor_list
})
в этом коде
>>> print measuring_value_last
[<measuring_value: -6.8>, <measuring_value: 40.0>, <measuring_value: -18.1>, <measuring_value: 0.0>, <measuring_value: -2.17>, <measuring_value: -1.9>]

>>> print sensor_list
[<sensor_type: влажность, <sensor_type: осадки, <sensor_type: T
температура1, <sensor_type: температура2, <sensor_type: температура3, <sensor_type: температура4]
шаблон
<html><body>Время {{ datetime }}.</br>
<table border="1">
{% for i in measuring_value %}
<tr>
<td>величина {{ sensor.forloop.counter }}</td>
<td>{{ i.value }}</td>
<td>ед. измерения</td>
</tr>
{% endfor %}

</table>
<br/>
{{ measuring_value.2 }}
</body></html>
как задать в шаблоне отобразить таблицу, состоящую из
sensor_list.measuring | measuring_value.dt_value| sensor_list.unit
???

P.S. при использовании SQL решение было бы объеднить с помошью join таблицы measuring_value и sensor_list. Но как подобное сделать с помошью Django …



Отредактировано (Май 12, 2008 20:36:22)

Офлайн

#2 Май 12, 2008 12:41:53

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как объединить несколько objects.all ?? аналог JOIN в Django

оказалось все гораздо проще:

{% for i in measuring_value %}
<tr>
<td>{{ i.sensor }}</td>
<td>{{ i.value }}</td>
<td>{{ i.sensor.unit }}</td>
</tr>
{% endfor %}
P.S. доки рулят



Отредактировано (Май 12, 2008 20:35:07)

Офлайн

#3 Май 12, 2008 17:45:49

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

как объединить несколько objects.all ?? аналог JOIN в Django

Эээ я придираюсь, но если использовать тег “code” - читать значительно легче. :)

Офлайн

#4 Май 12, 2008 20:38:47

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как объединить несколько objects.all ?? аналог JOIN в Django

Ferroman
Эээ я придираюсь, но если использовать тег “code” - читать значительно легче. smile
хм,
а код частично отфильтровался, например
>>> print measuring_value_last


или я не так код тег указал?



Офлайн

#5 Май 13, 2008 12:12:05

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

как объединить несколько objects.all ?? аналог JOIN в Django

Там есть опции типа “code=python” или “code=bash”

>>> print measuring_value_last
[, , , , , ]
>>> print measuring_value_last
[, , , , , ]
Больше есть в википедии

Отредактировано (Май 13, 2008 12:15:25)

Офлайн

  • Начало
  • » Django
  • » как объединить несколько objects.all ?? аналог JOIN в Django[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version