Как автоматически сохранять данные каждый месяц?
CentreInvoice модель:
class CentreInvoice(core_models.TimestampedModel):
centre = models.ForeignKey(Centre, null=False, on_delete=models.CASCADE, related_name="c_centre_invoice")
rcl_share_amount = models.FloatField(null=True)
total_billed_amount = models.FloatField(null=True)
start_date = models.DateField()
end_date = models.DateField()
paneluser = models.ForeignKey("panel.PanelUser", related_name="c_invoice_creator", on_delete=models.DO_NOTHING)
invoice_no = models.CharField(max_length=255)
total_advance_payment = models.FloatField(default=0)
Я использую эту модель для генерации счетов-фактур в моем проекте. Мне нужно сохранять их вручную каждый раз, но я хочу, чтобы это происходило автоматически каждый месяц. Есть ли способ сделать это? Любой совет будет принят с благодарностью.
Вы определенно можете достичь этого, используя Celery + Celery Beat + Redis
- Celery: будет использоваться для фоновой задачи
- Celery Beat: Celery beat - это планировщик .
- Redis: он будет использоваться в качестве брокера celery, вы можете использовать любой брокер, такой как rabbitmq и т.д. .
Другим вариантом будет:
- Создайте пользовательскую команду в вашем приложении Django .
- Создайте задание cron и вызовите эту пользовательскую команду, используя это задание cron.
Я предпочитаю первый подход, потому что могу управлять всеми планировщиками на уровне кода.
PS: Я работаю над Django starter-kit, который будет иметь все эти основные функции, это будет Django-приложение с открытым исходным кодом :)