django заказанная модель пакета - PullRequest
0 голосов
/ 22 апреля 2020

Я использую django заказанную модель , чтобы заказать мой lines. когда я перетаскиваю порядок файлов из внешнего интерфейса.

Я вызываю конечную точку, чтобы переместить файл на следующую позицию. но в ответе порядок не меняется.

здесь есть код

models.py

class Line(OrderedModel):  
    """
    Represents a segmented line from a document
    """
    # box = gis_models.PolygonField()  # in case we use PostGIS

    content = models.CharField(max_length=200,null=True,blank=True)
    document = models.ForeignKey(Document,
                                      on_delete=models.CASCADE,
                                      related_name='lines')
    # text direction
    order_with_respect_to = 'document'
    version_ignore_fields = ('document', 'order')

    external_id = models.CharField(max_length=128, blank=True, null=True)

    class Meta(OrderedModel.Meta):
        pass

serializers.py

class LineMoveSerializer(serializers.ModelSerializer):
    index = serializers.IntegerField()

    class Meta:
        model = Line
        fields = ('index',)

    def __init__(self, *args, line=None, **kwargs):
        self.line = line
        super().__init__(*args, **kwargs)

    def move(self):
        self.line.to(self.validated_data['index'])

views.py

@action(detail=True, methods=['post'])
def move(self, request, document_pk=None, pk=None):

    line = get_object_or_404(Line, pk=pk)
    serializer = LineMoveSerializer(line=line, data=request.data)
    if serializer.is_valid():
        serializer.move()
        lines = Line.objects.filter(document_part=part_pk).values('pk','order')
        return Response(status=status.HTTP_200_OK,data= {'moved': lines})
    else:
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

...