gpt4 book ai didi

python - 如何从 Django 中的查询集中检索值?

转载 作者:太空宇宙 更新时间:2023-11-03 23:59:20 26 4
gpt4 key购买 nike

我正在尝试从查询集中检索不同的 .values() 但在返回正确值时遇到问题。如何编写我的 model 以便我可以使用 .values() 方法检索属性?

我试图更改模型的 __str__ 方法以返回字典,但这不起作用或者我做错了。

class Settings(models.Model):
bb_bonus_qualify = models.CharField(max_length=16, default=38.00)
service_breakpoint = models.CharField(max_length=16, default=1700.00)

def __str__(self):
return '%s: %s, %s: %s' % (
'bb_bonus', self.bb_bonus_qualify, 'service_breakpoint', self.service_breakpoint)

我想说 Settings.objects.last().values('bb_bonus') 并返回 self.bb_bonus_qualify 的值。我似乎遇到的常见错误是:AttributeError: 'Settings' object has no attribute 'values'

最佳答案

这里的问题是您的 .last() 将检索 last Settings 对象。因此,您将在 Settings 对象上调用 .values('bb_bonus')。由于模型没有 .values(..) 方法,因此它不会返回任何内容。

然而,您可以从查询集中检索特定列的值,方法是:

Settings.objects<b>.values_list('bb_bonus_qualify', flat=True)</b>.last()

因此我们在这里使用 .values_list(..) [Django-doc] , 这接受列的名称作为参数。然后它通常会返回具有这些值的列表的 QuerySet。但是,如果您指定一个列;然后,正如文档所说:

If you only pass in a single field, you can also pass in the flat parameter. If True, this will mean the returned results are single values, rather than one-tuples.

这意味着我们创建了一个奇异值的 QuerySet,然后我们将检索该查询集的最后一个条目。请注意,我们不是从查询集中获取所有元素,.last() 被“注入(inject)”到我们对数据库执行的查询中,因此结果是最后一条记录的该列的标量值。

.values_list(..) 因此需要在 .last() 之前执行,否则您将与一个Settings 对象,而不是 QuerySet

关于python - 如何从 Django 中的查询集中检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com