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?