Django'da gece yarısı model değerini düşürme
Aug 17 2020
Days_till_study değerini her gün gece yarısı 1 ile azaltmak istiyorum.
Şu anki yaklaşımım pek zarif değil. Bunu yapmanın daha iyi bir yolu var mı?
from django.db import models
from django.utils import timezone
class Card(models.Model):
question = models.CharField(max_length=100)
answer = models.TextField()
date = models.DateTimeField(default=timezone.now)
creator = models.ForeignKey(User, on_delete=models.CASCADE)
decks = models.ManyToManyField(Deck)
days_till_study = models.IntegerField(default=1)
def __str__(self):
return self.question
def decrement_days_till_study(self):
if days_till_study < 1:
x = str(datetime.datetime.now())
if x[x[11:26]] == '00:00:00.000000':
days_till_study += 1
Bunu okuduğunuz için teşekkürler.
Yanıtlar
1 Gram Aug 17 2020 at 10:11
Sonucu anında hesaplamak
Veritabanında nelerin saklanacağını kontrol ediyorsanız, her iki günü de veritabanında saklamak ve farkı buna göre hesaplamak daha iyidir:
class Card(models.Model):
created_at = models.DateTimeField()
study_at = models.DateTimeField()
@property
def days_till_study(self):
return (self.study_at - self.created_at).days
Kereviz ile Planlama
Hala bir programa göre bir şeyler yapmanız gerekiyorsa ( days_till_study
gece yarısı güncelleme gibi ), django-cron kitaplığını veya başka bir Kereviz tabanlı çözümü deneyebilirsiniz .
Cron ile planlama
Ayrıca, bir yönetim komutu oluşturabilir ve bunu sistem cronu aracılığıyla bir zamanlamaya göre çalıştırabilirsiniz .
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'