2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
此答案適用于您不想向模型添加虛擬屬性(模型保持原樣)的情況。
向查詢集結(jié)果對(duì)象添加附加字段:
from django.db.models import BooleanField, Value upcomingActivity.objects.annotate(upcoming=Value(True, output_field=BooleanField())).all()
結(jié)果查詢集中的每個(gè)對(duì)象都將具有upcoming
布爾值的屬性True
。(性能應(yīng)該不錯(cuò),因?yàn)檫@對(duì) DB 來說很容易,而且 Django/Python 不需要做太多額外的工作。)
胡安卡洛斯評(píng)論后編輯:
Django 序列化器用于序列化模型對(duì)象,因此默認(rèn)情況下不會(huì)序列化任何非模型字段(因?yàn)榛旧?,這種情況下的序列化器用于加載/轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫數(shù)據(jù))。
請(qǐng)參閱https://docs.djangoproject.com/en/2.2/topics/serialization/
Django 的序列化框架提供了一種將 Django 模型“翻譯”成其他格式的機(jī)制。
另請(qǐng)參閱:Django - 如何在序列化的 QuerySet 中包含帶注釋的結(jié)果?
根據(jù)我自己的經(jīng)驗(yàn):
在大多數(shù)情況下,我們json.dumps
在視圖中使用序列化,這就像一個(gè)魅力。您可以通過注釋或處理數(shù)據(jù)(列表理解等),然后通過json
.
在您的情況下,另一種可能性可能是在從數(shù)據(jù)庫中獲取數(shù)據(jù)后自定義序列化程序或序列化程序的輸入。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
您可以使用類函數(shù)返回upcoming值,如下所示:
def upcoming(self):
is_upcoming = # some logic query or just basically set it to true.
return is_upcoming
然后按照您的方式在您的序列化程序中正常調(diào)用它。
fields= ( 'upcoming','title','address','pk' )
添加回答
舉報(bào)