从queryset获取字典

Hee*_*wal 3 django django-queryset

我在下面的查询中要提取“ specs”的地方,这是一本字典,但是envi_dict的类型是Queryset类。如何从该查询集中获取字典?任何帮助深表感谢。

envi_dict = Environment.objects.values('specs')
Run Code Online (Sandbox Code Playgroud)

结果

<QuerySet [({u'CPU Model': u'Dell', u'RAM': 1000, u'CPU': 400},), ({u'CPU Model': u'Dell', u'RAM': 1000, u'CPU': 400},)]>, <class 'django.db.models.query.QuerySet'>, )
Run Code Online (Sandbox Code Playgroud)

我尝试了Environment.objects.filter(title=item.title).values('specs')Environment.objects.get('specs')但是我仍然得到一个查询集。

编辑:下面是 models.py

class CommonModel(models.Model):

    author = models.ForeignKey('auth.User',)
    title = models.CharField(max_length=400)
    comments = models.TextField(blank=True)
    requirements = JSONField(default = {})
    specs = JSONField(default= {})
    created_date = models.DateTimeField(default=timezone.now)
    updated_date = models.DateTimeField(blank=True, null=True)

    class Meta:
       abstract = True

    def update(self):
        self.updated_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

class Estimate(CommonModel):

    gp_code = models.TextField(default='Unknown')
    inputs = models.TextField(blank=True)
    ...
    def __str__(self):
        return self.title

class Environment(CommonModel):

    estimate = models.ForeignKey(Estimate,related_name='environments')
    logic = PythonCodeField(blank=True, null=True)
    ...
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 5

通过遍历所有环境模型实例,以模型instance.title为键,而specs为值来构建字典列表。

[{i.title: i.specs} for i in Environment.objects.all()]
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要一个 dict 对象,那么它将是: `{i.title: i.specs for i in Environment.objects.all()}` 而不添加逗号。 (3认同)