我再一次请求你的帮助。我想从数据库中返回Json格式的数据,我需要3个值temperature, date and sensor.description。没有什么问题,我可以查询和获取“温度”和“日期”,但我很难得到传感器的描述。这给了我温度和日期
sen = S280000020E3120.objects.filter(date__range=[dateo, datee]).values('date', 'temperature')这将返回描述
desc = S280000020E3120.objects.filter(date__range=[dateo, datee]).last().sensor.description如果我想从中返回json,我必须执行sen = list(sen),但是当我试图通过result = sen.append(desc)将desc附加到sen时,我得到了错误
NoneType对象不可迭代
是否有可能以类似的格式得到结果?
{
"ds": [
{"date": "2020-06-19T16:23:16", "temperature": "27.4"},
{"date": "2020-06-19T16:26:24", "temperature": "27.4"},
{..rest of data..},
sensor.description
]
}我的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'我得到的输出
{"ds": [{"date": "2020-06-19T16:23:16", "temperature": "27.4"}, {"date": "2020-06-19T16:26:24", "temperature": "27.4"}, {...}]}当我可以很容易地得到描述时,我想要的输出或类似的东西,因为我希望这些数据将是带有char.js或什么的图形
{"ds": [{"date": "2020-06-19T16:23:16", "temperature": "27.4"}, {"date": "2020-06-19T16:26:24", "temperature": "27.4"}, , {...},sensor.description]}在本例中,我只查询一个表,但在最后,如果这使其有任何不同,则需要从其中8个表中获取数据。
发布于 2020-08-14 09:22:22
我不知道你的传感器模型是什么样子,但总的来说,这应该是个好办法:
sen = S280000020E3120.objects.filter(date__range=[dateo, datee]).values('date','temperature','sensor__description')您也可以在这里使用Djangos字段查找语法。请参阅:https://docs.djangoproject.com/en/3.1/ref/models/querysets/#django.db.models.query.QuerySet.values
https://stackoverflow.com/questions/63402104
复制相似问题