Как изменить логическое поле "isActual" по дате - PullRequest
0 голосов
/ 03 июля 2019

Я новичок в 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.

Его значение должно быть False, если сообщение создано более 1 месяца (установите флажок "created").

Я не знаю, как его создать. Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Вы можете комментировать ваш набор запросов, например:

from django.utils.timezone import 
from dateutil.relativedelta import <b>relativedelta</b>
from django.db.models import BooleanField, Q, Expression

Post.objects.annotate(
    is_actual=ExpressionWrapper(
        <b>Q(created__gte=now() - relativedelta(months=1))</b>,
        output_field=BooleanField()
    )
)

Объекты Post, которые возникают в результате этого, будут иметь дополнительный атрибут is_actual, равный True, если сообщение моложе одного месяца, и False в противном случае.

Сначала необходимо установить пакет python-dateutil [PiPy] , чтобы импортировать relativedelta [readthedocs.io] , с:

pip install <b>python-dateutil</b>
0 голосов
/ 03 июля 2019

Сначала создайте BooleanField () и проверьте текущий часовой пояс, например: Ответ и попробуйте.

Надеюсь, это поможет!

...