class Order(models.Model):
status = models.CharField(verbose_name='Статус')
completed_date = models.DateTimeField(null=True)
def send_message(order: Order):
# Šalje poruku u TG
...
def check_cancelled_orders():
batch = 10000
offset = 0
while True:
cancelled_orders = Order.objects.filter(
status='cancelled', completed_date__is_null=True
)[offset: offset+batch]
if not cancelled_orders:
break
offset += batch
completed_date = now()
for order in cancelled_orders:
send_message(order)
Order.objects.bulk_update(cancelled_orders, ['completed_date'])