我是Django Rest Framework的新手。我有这个模型-
class Post(models.Model):
created = models.DateTimeField(auto_now_add=True)
description = models.CharField(verbose_name='description', db_index=True, max_length=64)
在此模型中,我要添加字段“ isActual
”,其值等于True
或False
。
如果发布创建的时间超过1个月(检查字段“ False
”),则他的值必须为created
。
我不知道如何创建它。有可能吗?
答案 0 :(得分:0)
首先,创建BooleanField()和 像这样Answer一样检查当前时区,然后尝试。
希望这会有所帮助!
答案 1 :(得分:0)
您可以像这样注释您的查询集:
from django.utils.timezone import
from dateutil.relativedelta import relativedelta
from django.db.models import BooleanField, Q, Expression
Post.objects.annotate(
is_actual=ExpressionWrapper(
Q(created__gte=now() - relativedelta(months=1)),
output_field=BooleanField()
)
)
由此产生的Post
对象将带有一个额外的属性is_actual
,如果该帖子还不到一个月,则该属性为True
,否则为False
。 / p>
您需要先安装python-dateutil
package [PiPy]才能通过以下方式导入relativedelta
[readthedocs.io]:
pip install python-dateutil