在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 如何對 django 的 queryset 里面添加一個固定值的字段???

如何對 django 的 queryset 里面添加一個固定值的字段???

  1. 假如我有代碼如下:
from django.contrib.auth.models import User

us = User.objects.all()

# 我想要獲取所有用戶的 id,is_active
v1 = us.values("id", "is_active")

# 現(xiàn)在我想要在結(jié)果里面加入一個其他字段(原 User 里面沒有),如: other='hehe'
# [{"id": 1, "is_active": True, "other": "hehe"}, ...]
v1 = us.values("id", "is_active", other="hehe")  # 這樣是會報錯的

那么如何實現(xiàn)我要的結(jié)果呢???

希望懂的人幫忙一下。

回答
編輯回答
薄荷綠

annotate 使用注解

2018年8月14日 10:35
編輯回答
擱淺

annotate就可以,以前我遇到過需要在查詢集里面加一個字段,這個字段是其它字段計算出來的,因為有排序的需求。而且mysql也是有語法支持的。

2017年5月24日 20:01
編輯回答
命多硬

django orm沒有提供這個功能,遍歷v1,逐個添加吧。

2018年4月18日 10:15
編輯回答
檸檬藍

很巧 我最近查另外一個問題的時候找到了跟這個相關(guān)的知識點, 我覺得你這個可以用sql取巧來做,
貼一下我在自己shell里跑的代碼

from useraccount.models import User
sql = ''' select id, is_active,'haha' as other from useraccount_user limit 5'''
us = User.objects.raw(sql)
for u in us:
    print u.id, u.is_active,u.other
    
1 True haha
2 True haha
3 True haha
4 True haha
5 True haha
    

需要注意的是,使用raw函數(shù)select的時候必須篩選主鍵, 不然在實際訪問字段的時候會爆

InvalidQuery: Raw query must include the primary key 
2017年10月16日 22:17
編輯回答
不舍棄

我覺得這是一個XY問題.
你想要實現(xiàn)的效果并不應該用這是方式實現(xiàn).
你如果可以把這么做的目的說出來,我相信很多人可以幫你解決.

具體能不能實現(xiàn)我也很感興趣,正在研究奇淫技巧.

update:
我看了一下Django的源碼,沒有找到優(yōu)雅的解決方案,起碼沒有比直接循環(huán)來的方便的.
GG.

你還是循環(huán)的加進去吧....

2018年8月10日 01:12
編輯回答
爆扎

用annotate可以完成這個需求,類似這樣
.annotate(mycolumn=Value('xxx', output_field=models.CharField()))

2017年12月13日 22:01