Python 仅从QuerySet中提取不带键的值,并将其保存到列表中
我无法仅从QuerySet获取值。 我有我的桌子:Python 仅从QuerySet中提取不带键的值,并将其保存到列表中,python,django,django-queryset,Python,Django,Django Queryset,我无法仅从QuerySet获取值。 我有我的桌子: class Temperature(models.Model): id = models.IntegerField(primary_key=True) # AutoField? name = models.TextField(blank=True, null=True) value = models.IntegerField(blank=True, null=True) time = models.TextFi
class Temperature(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
name = models.TextField(blank=True, null=True)
value = models.IntegerField(blank=True, null=True)
time = models.TextField(blank=True, null=True)
class Meta:
managed = False
db_table = 'temperature'
在views.py中:
class ChartData(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, format=None):
labels = list(Temperature.objects.using('sensors').values('time'))
temp_values = list(Temperature.objects.using('sensors').values('value'))
data = {
"labels": labels,
"temperature": temp_values,
}
return Response(data)
使用html文件中的console.log()检查值,目前它们是:
但我只想检索值,没有键。例如:
如果我正确理解了您的问题,我将非常感谢您提供的任何帮助,我认为您正在寻找的不是
值
此外,您可能不需要在那里调用list()
,这只会降低速度并浪费内存。为此,您必须使用“values\u list”函数而不是“values”,如果您只需要一个字段,请使用flat=True:
temp_values = Temperature.objects.using('sensors').values_list('value', flat=True)
您可以改为使用,并指定flat=True
,如:
def get(self, request, format=None):
labels = list(Temperature.objects.using('sensors').values_list('time', flat=True))
temp_values = list(Temperature.objects.using('sensors').values_list('value', flat=True))
# ...
这真的很接近。这返回值,但作为一个列表,这就是我要搜索的!非常感谢你!我发现并尝试了不同的解决方案,真是疯了……谢谢!你解决了我即将面临的第一个和第二个问题:)
from operator import itemgetter
def get(self, request, format=None):
qs = Temperature.objects.using('sensors').values_list('time', 'value')
labels = list(map(itemgetter(0), qs))
temp_values = list(map(itemgetter(1), qs))
# ...