gpt4 book ai didi

javascript - 返回 QuerySet.values() 或 value_list() 中方法的结果?

转载 作者:行者123 更新时间:2023-12-03 12:17:54 25 4
gpt4 key购买 nike

在 QuerySet 上调用 .values() 或 .values_list() 时,您可以传入要返回的特定字段,甚至是您想要从相关表中获取的字段。我想要做的是除了一些字段之外,还包括模型上定义的方法的结果,例如:

class MyModel(models.Model):

name = models.CharField()

def favouriteNumber(self):
return random.randint(1,10)

list(MyModel.objects.all().values('name','favouriteNumber'))
=> [{'name':'Bob', 'favouriteNumber':6}, {'name':'Fred', 'favouriteNumber':4}]

上面的方法不起作用,但这是我想要做的,就像模板语言可以像字段一样对待没有参数的模型方法。

我想要这样做的原因是,我可以将信息传递给前端的 JavaScript 来使用,而不是每次都调用回服务器来检索它。

假设上述(或类似的)不可能,我知道我可以在之后循环我的values()结果并手动添加额外的信息..什么是最有效(和干净)的方法那?

最佳答案

您可能想尝试使用 only()而不是 values()。与 values() 类似,它只会从数据库中获取指定字段,但与 values() 不同的是,它会返回您可以调用方法的实际实例对象。

这样,无论您是在 View 还是模板中循环,除了指定的字段之外,您还可以访问该方法。

如果您需要类似字典的结构(例如,对于 json.dumps()),您可以在理解中构造它们:

instances = MyModel.objects.only('name')
data = [{'name': instance.name,
'favourite': instance.favouriteNumber()} for instance in instances]

关于javascript - 返回 QuerySet.values() 或 value_list() 中方法的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24592512/

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