2 回答

TA贡献1810条经验 获得超4个赞
此答案适用于您不想向模型添加虚拟属性(模型保持原样)的情况。
向查询集结果对象添加附加字段:
from django.db.models import BooleanField, Value upcomingActivity.objects.annotate(upcoming=Value(True, output_field=BooleanField())).all()
结果查询集中的每个对象都将具有upcoming
布尔值的属性True
。(性能应该不错,因为这对 DB 来说很容易,而且 Django/Python 不需要做太多额外的工作。)
胡安卡洛斯评论后编辑:
Django 序列化器用于序列化模型对象,因此默认情况下不会序列化任何非模型字段(因为基本上,这种情况下的序列化器用于加载/转储数据库数据)。
请参阅https://docs.djangoproject.com/en/2.2/topics/serialization/
Django 的序列化框架提供了一种将 Django 模型“翻译”成其他格式的机制。
另请参阅:Django - 如何在序列化的 QuerySet 中包含带注释的结果?
根据我自己的经验:
在大多数情况下,我们json.dumps
在视图中使用序列化,这就像一个魅力。您可以通过注释或处理数据(列表理解等),然后通过json
.
在您的情况下,另一种可能性可能是在从数据库中获取数据后自定义序列化程序或序列化程序的输入。

TA贡献1842条经验 获得超22个赞
您可以使用类函数返回upcoming值,如下所示:
def upcoming(self):
is_upcoming = # some logic query or just basically set it to true.
return is_upcoming
然后按照您的方式在您的序列化程序中正常调用它。
fields= ( 'upcoming','title','address','pk' )
添加回答
举报