[英]Django ORM: How to use count method inside values_list method?
[英]How do i alias a composite value of 2 fields inside the values_list method of object_manager?
我正在嘗試創建一個非常簡單的表單,它允許用戶從選擇列表中選擇一個活動用戶並將該選擇提交給后端。 這是我的代碼:
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)
我正在嘗試獲取一個可由 ChoiceField 小部件使用的tuples
列表,以顯示所有可用的活動同事以供選擇。
我正在嘗試從 CustomUser 的 first_name 和 last_name 字段創建一個名為full_name
的別名。 然后我想按該別名對結果進行排序,並使用 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
數據庫函數來執行字符串連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.