问题描述
一次输入以将项目放入Customer_order。它必须自动插入并保存,才能保存Daily_Cart。
class Consumer_order(models.Model):
name = models.ForeignKey(Consumer,on_delete=models.CASCADE)
ac_no = models.CharField(max_length=32)
newspaper = models.ManyToManyField(Newspaper,related_name="Consumer_ac_no")
added_date = models.DateField(max_length=32,auto_Now_add=True)
def __str__(self):
return str(self.ac_no)
class Daily_Cart(models.Model):
ac_no = models.ForeignKey(Consumer_order,on_delete=models.DO_nothing)
newspaper = models.ManyToManyField(Consumer_order,related_name="Consumer_ac_no")
added_date = models.DateTimeField(max_length=32,auto_Now_add=True)
def __str__(self):
return str(self.added_date)
def start(self,*args,**kwargs):
date_object = datetime.date.today()
crontab(minute=30,hour='7',day_of_week='mon,tue,wed,thu,fri,sat,sun')
self.ac_no = self.Consumer_order.ac_no
self.newspaper = self.Consumer_order.newspaper
super(Daily_Cart,self).start(*args,**kwargs)
scheduler.start()
解决方法
为此,您可以编写cron脚本。 很简单请按照以下步骤操作:
安装 APScheduler python库。
pip install APScheduler==3.6.3
在Django应用(与model.py所在的目录相同)中创建 updater.py 和 insert_data_script.py
在insert_data_script.py中定义一个方法,使用该方法,Consumer_order的所有数据都将传输到Daily_Cart。我们称 transfer_daily_data 为方法名称
在 updater.py
中定义cron作业from apscheduler.schedulers.background import BackgroundScheduler
from .insert_data_script import transfer_daily_data
def start():
scheduler = BackgroundScheduler()
scheduler.add_job(transfer_daily_data,'cron',hour=1) # This script will run every day on 1 am (UTC time)
scheduler.start()
有关更多信息,您可以关注官方documentation