从postgres中检索数据时如何避免使用`extra`?

问题描述 投票:0回答:1

我正在使用以下代码从postgres DB中检索数据:

values = ('foo', 'bar', 'group')

FooBar.objects.order_by('-id').extra(select={'group': "'stackoverflow'"}).values(*values)

代码工作正常,但我听说使用extra不是更好,甚至django文档说“使用这种方法作为最后的手段。”所以问题是如何避免使用extra来检索数据?

django orm django-orm
1个回答
2
投票

您可以尝试使用Value()表达式。基本上,当您需要表示表达式中的整数,布尔值或字符串的值时,可以将该值包装在Value()中。

from django.db.models import Value, CharField
FooBar.objects.annotate(group=Value('stackoverflow', output_field=CharField())).values('foo', 'bar', 'group').order_by('-id')
© www.soinside.com 2019 - 2024. All rights reserved.