Django में आधी रात को घटता मॉडल मूल्य
मैं आधी रात को 1 दिन के साथ मान days_till_study घटाना चाहता हूं।
मेरा वर्तमान दृष्टिकोण बहुत सुरुचिपूर्ण नहीं है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?
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
इसे पढ़ने के लिए धन्यवाद।
जवाब
1 Gram
मक्खी पर परिणाम की गणना
यदि आपके पास डेटाबेस में स्टोर करने के लिए नियंत्रण है, तो डेटाबेस में दोनों दिनों को स्टोर करना और उसके आधार पर अंतर की गणना करना बेहतर है:
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
अजवाइन के माध्यम से निर्धारण
यदि आपको अभी भी शेड्यूल के अनुसार कुछ करने की आवश्यकता है (जैसे days_till_study
आधी रात को अपडेट करना ) तो आप django-cron लाइब्रेरी या एक और Celery- आधारित समाधान आज़मा सकते हैं।
क्रोन के माध्यम से निर्धारण
इसके अलावा, आप एक प्रबंधन कमांड बना सकते हैं और इसे सिस्टम क्रोन के माध्यम से अनुसूची द्वारा चला सकते हैं ।