python – Django ordenar una relación Many to Many de forma dinámica


Tengo un modelo con una relacion many to many:

Modelo:

class AssignAudios(FieldDefaultsAbstracts):

disease = models.ForeignKey(Disease, blank=True, null=True, on_delete=models.CASCADE)
audio = models.ManyToManyField(audios, blank=True)
order = models.PositiveIntegerField(blank=True, null=True)

class Meta:
    ordering = ('order')

def __str__(self):
    return self.disease

Se que si no especificas DJango te genera una tabla intermediaria donde se almacenara el id del registro con el id del audio relacionado en este caso mi tabla intermediaria tiene el nombre por defecto -assignAudio_assignaudios_audio-, ahora mi pregunta es:

Si al relacionar me mandan (3,6,1,7,2) al consultar ese registro la relacion Many to Many me traerá los datos en orden ascendente (1,2,3,6,7), Como puedo ordenar los ids de forma que coincidan con el orden que se especifico al inicio.

View:

class AsssignAudiosView(viewsets.ModelViewSet):
model = models.AssignAudios
permission_classes = (permissions.IsAuthenticated, )
serializer_class = serializers.AssignAudiosSerializers

def get_queryset(self):
    queryset = self.model.objects.all()
    return self.filter(queryset)

def filter(self, queryset):
    kwargs = self.request.GET 
    disease = kwargs.get('disease', None)

    queryset = queryset.filter(
        is_active = True
    )
    if disease:
        queryset = queryset.filter(
            disease = disease
        )
    return queryset

def create(self, request, *args, **kwargs):
    serializer = serializers.CreateAssignedAudioSerializers(data = request.data)
    serializer.is_valid(raise_exception = True)
    self.perform_create(serializer) 
    headers = self.get_success_headers(serializer.data)
    return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

def perform_create(self, serializer):
    item = serializer.save(
        owner = self.request.user,
        is_active=True,       
    )
    return item

def update(self, request, *args, **kwargs):
    partial = kwargs.pop('partial', False)
    instance = self.get_object()
    serializer = serializers.CreateAssignedAudioSerializers(instance, data=request.data, partial=partial)
    serializer.is_valid(raise_exception=True)
    self.perform_update(serializer)
    return Response(serializer.data)    

def perform_update(self, serializer):
    serializer.save(
        owner = self.request.user,
        is_active=True,  
    )

def perform_destroy(self, instance):
    instance.is_active = False
    instance.save()

Serializers:

class AudioSerializers(serializers.ModelSerializer):
class Meta:
    model = models.audios
    fields = ('id', 'name','audio','duration')

class AssignAudiosSerializers(serializers.ModelSerializer):
audio = AudioSerializers(many = True)

class Meta:
    model = models.AssignAudios
    fields = ('id','disease','audio','order')

class CreateAssignedAudioSerializers(serializers.ModelSerializer):
class Meta:
model = models.AssignAudios
fields = (‘id’,’disease’,’audio’,’order’)

Estuve investigando y veo que mencionan el agregar un order a la tabla intermedia sin embargo ¿Como puedo agregar un campo a la tabla intermedia sin afectar los datos que ahi ya existen?
Vi que puedes usar through pero solo funciona cuando tu defines la tabla intermediaria ¿Hay alguna alternativa mejor?