Reputation: 61
Once again I'm asking for your help. I want to return data in Json format from database and I need 3 values temperature, date and sensor.description
. With little to no problem I can query and get 'temperature' and 'date' but I have hard time with getting that sensor description. This gives me temperature and date
sen = S280000020E3120.objects.filter(date__range=[dateo, datee]).values('date', 'temperature')
and this returns the description
desc = S280000020E3120.objects.filter(date__range=[dateo, datee]).last().sensor.description
And If I want to return json from that I have to do sen = list(sen)
but when I try to append desc
to sen
by result = sen.append(desc)
I got error
NoneType object is not iterable
Is it possible to get result in similar format?
{
"ds": [
{"date": "2020-06-19T16:23:16", "temperature": "27.4"},
{"date": "2020-06-19T16:26:24", "temperature": "27.4"},
{..rest of data..},
sensor.description
]
}
My view.py
def chartData(request):
fixm = datetime.min.time()
fixd = datetime.max.time()
dateo = '2020-06-19'
datee = '2020-6-20'
dateo = datetime.strptime(dateo, '%Y-%m-%d')
datee = datetime.strptime(datee, '%Y-%m-%d')
dateo = datetime.combine(dateo, fixm)
datee = datetime.combine(datee, fixd)
sen = S280000020E3120.objects.filter(date__range=[dateo, datee])
#date = sen.values('date', )
value = sen.values('date', 'temperature')
lvalue=list(value)
senName = sen.last().sensor.sensor_name
#lvalue = lvalue.append(senName)
result = {
'ds': list(lvalue),
}
return JsonResponse(result, safe=False)
models.py
class S280000020E3120(models.Model):
sensor = models.ForeignKey('Sensors', models.DO_NOTHING)
temprature = models.DecimalField(max_digits=4, decimal_places=1)
date = models.DateTimeField()
class Meta:
managed = False
db_table = '28-0000020e3120'
class Sensors(models.Model):
sensor_name = models.CharField(max_length=20)
description = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'sensors'
Output I get
{"ds": [{"date": "2020-06-19T16:23:16", "temperature": "27.4"}, {"date": "2020-06-19T16:26:24", "temperature": "27.4"}, {...}]}
Output I want or something similar when I can easily get description because this data I hope will be graph with char.js or something
{"ds": [{"date": "2020-06-19T16:23:16", "temperature": "27.4"}, {"date": "2020-06-19T16:26:24", "temperature": "27.4"}, , {...},sensor.description]}
In this example I query only one table but at the end I need get data from 8 of these if this makes it any different.
Upvotes: 0
Views: 104
Reputation: 312
I don't know how your sensor model looks like, but in general, this should do the trick:
sen = S280000020E3120.objects.filter(date__range=[dateo, datee]).values('date','temperature','sensor__description')
You can use Djangos field lookup syntax here too. See: https://docs.djangoproject.com/en/3.1/ref/models/querysets/#django.db.models.query.QuerySet.values
Upvotes: 1