从 postgres 检索数据时如何避免使用 extra ?
How to avoid using `extra` when retrieve data from postgres?
我正在使用以下代码从 postgres 数据库中检索数据:
values = ('foo', 'bar', 'group')
FooBar.objects.order_by('-id').extra(select={'group': "'Whosebug'"}).values(*values)
代码工作正常,但我听说使用 extra
不是可取的,甚至 django 文档也说“将此方法作为最后的手段”。所以问题是如何避免使用 extra
检索数据?
您可以尝试使用 Value() 表达式。基本上,当您需要在表达式中表示整数、布尔值或字符串的值时,您可以将该值包装在 Value() 中。
from django.db.models import Value, CharField
FooBar.objects.annotate(group=Value('Whosebug', output_field=CharField())).values('foo', 'bar', 'group').order_by('-id')
我正在使用以下代码从 postgres 数据库中检索数据:
values = ('foo', 'bar', 'group')
FooBar.objects.order_by('-id').extra(select={'group': "'Whosebug'"}).values(*values)
代码工作正常,但我听说使用 extra
不是可取的,甚至 django 文档也说“将此方法作为最后的手段”。所以问题是如何避免使用 extra
检索数据?
您可以尝试使用 Value() 表达式。基本上,当您需要在表达式中表示整数、布尔值或字符串的值时,您可以将该值包装在 Value() 中。
from django.db.models import Value, CharField
FooBar.objects.annotate(group=Value('Whosebug', output_field=CharField())).values('foo', 'bar', 'group').order_by('-id')