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_studygece 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 .
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
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'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'