Classificação natural no Django Queryset

Estou trabalhando em um sistema que lista uma gama de produtos classificados por seu código de produto. Os códigos do produto são compostos de duas letras para as seguidas de um número, por exemplo, EG1.

Atualmente, classifico esses produtos fazendo um simples

Product.objects.order_by('product_code'),

no entanto, como pode haver códigos de produtos com vários dígitos (por exemplo, EG12), eles aparecerão acima antes dos códigos de um dígito. ou seja, EG1, EG11, EG12, EG13 ... EG19, EG2, EG20 etc

Sei que adicionar zeros à esquerda nos códigos do produto corrigirá isso (por exemplo, EG01 em vez de EG1), mas como já existe literatura impressa e um site existente usando EG1, isso não é uma opção.

Existe uma maneira de corrigir isso para mostrar esses produtos na ordem correta?

questionAnswers(2)

yourAnswerToTheQuestion