У меня есть система Django, которая регулярно выполняет выставление счетов тысячам клиентов. Вот мои модели:Django `bulk_create` со связанными объектами
class Invoice(models.Model):
balance = models.DecimalField(
max_digits=6,
decimal_places=2,
)
class Transaction(models.Model):
amount = models.DecimalField(
max_digits=6,
decimal_places=2,
)
invoice = models.ForeignKey(
Invoice,
on_delete=models.CASCADE,
related_name='invoices',
null=False
)
Когда биллинг запускается, тысячи счетов-фактур с десятками операций каждым из них создано с использованием нескольких вложенных for
петли, который вызывает вставку для каждой созданной записи. Я мог запустить bulk_create()
по транзакциям для каждого индивидуального счета, но это все равно приводит к тысячам звонков на bulk_create()
.
Как можно было бы создать тысячи связанных моделей, чтобы поддерживать связь, и база данных используется наиболее эффективным способом?
Примечание:
- Я ищу родное решение Django, который будет работать на все базы данных (с возможным исключением SQLite).
- Моя система запускает биллинг в задании на сельдерей, чтобы отделить длительный код от активных запросов, но я все еще беспокоюсь о том, сколько времени требуется для завершения цикла выставления счетов.
- Решение должно предполагать, что другие запросы или выполняемые задачи также считываются и записываются в соответствующие таблицы.