python - 从 QuerySet 中仅提取没有键的值并将它们保存到列表中

标签 python django django-queryset

我在仅从 QuerySet 获取值时遇到问题。 我有我的 table :

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() 我正在检查值,目前它们是:enter image description here

但我只想检索值,没有键。例如: enter image description here

非常感谢任何帮助

最佳答案

您可以使用 values_list(…) [Django-doc]相反,并指定 flat=True,例如:

def get(self, request, format=None):
    labels = list(Temperature.objects.using('sensors').<b>values_list('time', flat=True)</b>) 
    temp_values = list(Temperature.objects.using('sensors').<b>values_list('value', flat=True)</b>)
    # ...

但以上内容安全。查询集 - 除非您指定 - 无序。这意味着两个查询可能会导致数据不“匹配”,因为第一个 time 值本身并不对应于第一个 value 值,尽管这可能是非典型行为(在某些/大多数数据库系统中),您通常不希望这种情况发生。它还会导致两次查询,效率不高。

您可以先获取值,然后使用 map(或 zip)进行转置,例如:

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))
    # ...

关于python - 从 QuerySet 中仅提取没有键的值并将它们保存到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239534/

相关文章:

python - django - 将列表转换回查询集

python - Tensorflow - batch_normalizaiton 层

Django-Socialauth 或 django-social-auth,哪个最好?

django - 有没有办法用我的模型中的更改来更新数据库?

django - 使用字符串作为 Django 过滤器查询的参数

python - django 查询返回错误 : expected str instance, 找到 ValuesListQuerySet

python - 添加一个在其他人共享 x 轴时不共享 x 轴的子图

javascript - 从 'onclick' 部分值中查找并单击一个项目

python - 为什么我的 PyGame 应用程序根本不运行?

python - 使用 filerImageField 上传图片