Python Django使用.value筛选数据库并调用外键
我再次请求你的帮助。我想从数据库返回Json格式的数据,我需要3个值Python Django使用.value筛选数据库并调用外键,python,django,Python,Django,我再次请求你的帮助。我想从数据库返回Json格式的数据,我需要3个值温度、日期和传感器。说明。几乎没有问题,我可以查询并获得“温度”和“日期”,但我很难获得传感器描述。这给了我温度和日期 sen = S280000020E3120.objects.filter(date__range=[dateo, datee]).values('date', 'temperature') 这将返回描述 desc = S280000020E3120.objects.filter(date__range=[da
温度、日期和传感器。说明。几乎没有问题,我可以查询并获得“温度”和“日期”,但我很难获得传感器描述。这给了我温度和日期
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
时,我得到了一个错误
非类型对象不可编辑
有可能得到类似格式的结果吗
{
"ds": [
{"date": "2020-06-19T16:23:16", "temperature": "27.4"},
{"date": "2020-06-19T16:26:24", "temperature": "27.4"},
{..rest of data..},
sensor.description
]
}
我的观点.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个表中获取数据,如果这使它有所不同。我不知道您的传感器模型是什么样子,但一般来说,这应该可以做到:
sen = S280000020E3120.objects.filter(date__range=[dateo, datee]).values('date','temperature','sensor__description')
这里也可以使用Djangos字段查找语法。请参阅:I updated models.py,但您的解决方案正是我所需要的。非常感谢。