Найти - Пользователи
Полная версия: Обновление устаревших данных в модели
Начало » Django » Обновление устаревших данных в модели
1
dezinfo
Не могу пока найти решение(без написания отдельного job) в Django для следующей задачи:

Для всех записей с условием (sysdate - creation_date > 60) обновить полу is_active = False

Может можно как то без отдельного job, например в модели функцию написать или …?
FishHook
Скорее всего вам этого не надо. Можно же сделать так
class MyModel(Model):
    name = CharField()
    creation_date = DateField()
    something = IntegerField()
    @property
    def is_active(self):
         return datetime.dadetime.now() - self.creation_date < datetime.timedelta(seconds=3600)

Но если очень хочется извращений, вызывайте функцию update_active каждый реквест (например из миддлвари), функция пусть сохраняет в БД время последней операции и если текущее время больше сохраненного на, например, пять минут (чтобы не нагружать базу), то апдейтим определенные записи.
dezinfo
FishHook
Скорее всего вам этого не надо. Можно же сделать так

А как свойство прочитать в запросе? Что бы не выводились неактивные записи.

С полями делал так Zip.objects.filter(is_active=False)
FishHook
Ну и стройте запрос сразу по времени
Zip.objects.filter(creation_date__gt=datetime.datetime.now()-datetime.timedelta(seconds=60))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB