образом вызывая в save() методе:
На сколько большая вероятность того, что рандомайзер будет постоянно попадать на уже существующие,
и запускать функцию снова. И на сколько вероятно, затормаживание создания заказа из-за этого?
Допустим поток будет, 100 заказов в день, и они будут оставаться в базе, не удаляться.
def generate_order_id(self):
"""" Generation order code id """
order_code = ''.join(random.choice(string.digits) for i in range(7))
if Orders.objects.filter(order_id=order_code).exists():
return self.generate_order_id()
return order_code
напиши тест: складывай номера в set(), генери их в цикле (ну хотя бы до 100.000, это три года работы кода при 100 заказах в день) и смотри, как быстро начнутся первые коллизии и сколько они будут разруливаться ближе к концу работы.
uuid генерь, там на 100к точно коллизий не будет
Обсуждают сегодня