首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用.value过滤数据库并调用外键

用.value过滤数据库并调用外键
EN

Stack Overflow用户
提问于 2020-08-13 19:34:45
回答 1查看 78关注 0票数 0

我再一次请求你的帮助。我想从数据库中返回Json格式的数据,我需要3个值temperature, date and sensor.description。没有什么问题,我可以查询和获取“温度”和“日期”,但我很难得到传感器的描述。这给了我温度和日期

代码语言:javascript
运行
复制
sen = S280000020E3120.objects.filter(date__range=[dateo, datee]).values('date', 'temperature')

这将返回描述

代码语言:javascript
运行
复制
desc = S280000020E3120.objects.filter(date__range=[dateo, datee]).last().sensor.description

如果我想从中返回json,我必须执行sen = list(sen),但是当我试图通过result = sen.append(desc)desc附加到sen时,我得到了错误

NoneType对象不可迭代

是否有可能以类似的格式得到结果?

代码语言:javascript
运行
复制
{
    "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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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'

我得到的输出

代码语言:javascript
运行
复制
{"ds": [{"date": "2020-06-19T16:23:16", "temperature": "27.4"}, {"date": "2020-06-19T16:26:24", "temperature": "27.4"}, {...}]}

当我可以很容易地得到描述时,我想要的输出或类似的东西,因为我希望这些数据将是带有char.js或什么的图形

代码语言:javascript
运行
复制
{"ds": [{"date": "2020-06-19T16:23:16", "temperature": "27.4"}, {"date": "2020-06-19T16:26:24", "temperature": "27.4"}, , {...},sensor.description]}

在本例中,我只查询一个表,但在最后,如果这使其有任何不同,则需要从其中8个表中获取数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 09:22:22

我不知道你的传感器模型是什么样子,但总的来说,这应该是个好办法:

代码语言:javascript
运行
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63402104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档