gpt4 book ai didi

python - 如何在 object_manager 的 value_list 方法中为 2 个字段的复合值添加别名?

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

我正在尝试创建一个非常简单的表单,允许用户从选择列表中选择一个事件用户并将该选择提交到后端。这是我的代码:

class PeerReviewColleagueSelectionForm(forms.Form):
ACTIVE_COLLEAGUES = CustomUser.objects.filter(is_active=True)\
.values_list('id', full_name=F(('first_name') + ' ' + F('last_name')))\
.order_by('full_name').annotate(Count='id')
colleague = forms.ChoiceField(label='selecteer collega', tuple=ACTIVE_COLLEAGUES)

我正在尝试获取 tuples 的列表ChoiceField 小部件可以使用它来显示所有可用的事件同事以供选择。

我正在尝试创建一个名为 full_name 的别名来自 CustomUser 的名字和姓氏字段。然后我想按该别名对结果进行排序,并使用 annotate(count) 按 id 进行分组(因为我知道每个 id 都是唯一的,并且我想要由 (id, full_name,) 组成的元组

但是,当我尝试这样做时,它会抛出: TypeError: values_list() got an unexpected keyword argument 'full_name'

如何根据 id 和名为 full_name 的别名创建元组?

最佳答案

不幸的是values_list()不接受表达式关键字参数。所以你应该先注释新字段:

CustomUser.objects.filter(is_active=True)
.annotate(full_name=Concat('first_name', Value(' '), 'last_name')
.values_list('id', "full_name")
.order_by('full_name')

请注意,您可以使用 Concat数据库函数来执行字符串连接。

关于python - 如何在 object_manager 的 value_list 方法中为 2 个字段的复合值添加别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60005546/

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