如何按日期更改布尔字段“ isActual”

时间:2019-07-03 13:54:39

标签: django django-rest-framework

我是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”,其值等于TrueFalse

如果发布创建的时间超过1个月(检查字段“ False”),则他的值必须为created

我不知道如何创建它。有可能吗?

2 个答案:

答案 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