Найти - Пользователи
Полная версия: как объединить несколько objects.all ?? аналог JOIN в Django
Начало » Django » как объединить несколько objects.all ?? аналог JOIN в Django
1
qman
Всем привет,
подскажите как
есть код модели:
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 …
qman
оказалось все гораздо проще:
{% for i in measuring_value %}
<tr>
<td>{{ i.sensor }}</td>
<td>{{ i.value }}</td>
<td>{{ i.sensor.unit }}</td>
</tr>
{% endfor %}
P.S. доки рулят
Ferroman
Эээ я придираюсь, но если использовать тег “code” - читать значительно легче. :)
qman
Ferroman
Эээ я придираюсь, но если использовать тег “code” - читать значительно легче. smile
хм,
а код частично отфильтровался, например
>>> print measuring_value_last


или я не так код тег указал?
Ferroman
Там есть опции типа “code=python” или “code=bash”
>>> print measuring_value_last
[, , , , , ]
>>> print measuring_value_last
[, , , , , ]
Больше есть в википедии
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB