Ordenación natural en Django Queryset

Estoy trabajando en un sistema que enumera una gama de productos ordenados por su código de producto. Los códigos de producto están formados por dos letras seguidas de un número, por ejemplo, EG1.

Actualmente clasifico estos productos haciendo un simple

Product.objects.order_by('product_code'),

sin embargo, como puede haber códigos de producto de varios dígitos (por ejemplo, EG12), estos aparecerán antes que los códigos de un solo dígito. es decir, EG1, EG11, EG12, EG13 ... EG19, EG2, EG20, etc.

Sé que agregar ceros iniciales a los códigos de producto solucionará esto (es decir, EG01 en lugar de EG1), pero como ya hay literatura impresa y un sitio existente que usa EG1, esta no es una opción.

¿Hay alguna manera de arreglar esto para mostrar estos productos en el orden correcto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta