2016-07-09 4 views
2

Ich versuche, die Paginierungsmechanismen von Django Rest Framework in meinem Fall ohne Erfolg zu verwenden.DFR: Paginierung ohne Queryset

class TransactionView(viewsets.ViewSet): 

    serializer_class = TransactionSerializer 

    def list(self, request): 
     # fetching data from external API... 

     serializer = self.serializer_class(data=list_of_json, many=True) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data) 
     else: 
      return Response(serializer.errors) 


class TransactionSerializer(serializers.Serializer): 
    # Serializer (transaction's) fields ... 

    def create(self, validated_data): 
     return APITransaction(**validated_data) 


class APITransaction(object): 

    def __init__(self, arg1, arg2, ...): 
     self.arg1 = arg1 
     ... 

Das Problem ist, dass die Registrierung des pagination_class (wie ich für den Rest meiner Ressource durchgeführt, die durch Modelle dargestellt wird) nicht funktioniert, da die Daten/geholt on the fly erstellt werden, so dass ich don Habe kein Model/Queryset.

Irgendwelche Ideen, wie ich den Paginierungsmechanismus von DRF verwenden könnte?

+0

Hallo, wie hast du das gelöst? Haben Sie @Linovias Antwort verfolgt und Ihren eigenen Paginierungskurs implementiert? – YuppieNetworking

+0

Ich hatte keine Zeit, die Best Practice Road hier zu folgen, also habe ich eine Funktion erstellt, die die Antwort manuell erstellt mit 'django.core.paginator' um die' list_of_jsons' zu paginieren und ein 'dict' mit' count, next 'zu erstellen , vorherige, numPages, Ergebnisse, die ich zurückgebe als 'return JsonResponse (the_dict, status = 200, safe = False)'. Ich werde nach dem tatsächlichen Code suchen und eine neue Antwort einreichen – chefarov

Antwort

2

Sie können die Seitennummerierung von vorhandenen DRFs nicht verwenden, da sie mit dem Abfrage-Set arbeiten sollen. Sie können jedoch Ihre eigene Klasse rollen, indem Sie BasePagination erben, obwohl ich es selbst nicht getan habe.