I'm working on backend part of project (Django REST). I have a task - to do sorting for the front (Vue). The frontend sends a key for sorting and a parameter for sorting.
Example:
GET /api/v1/stocks/?sort_key=FBS&sort_type=ascending
GET /api/v1/stocks/?sort_key=FBS&sort_type=descending
I guess it can be done with OrderingFilter and DjangoFilterBackend. Any suggestions will be helpful.
my models.py
class Stock(models.Model):
class Meta:
verbose_name_plural = "Stocks"
verbose_name = "Stock"
ordering = ("-present_fbs",)
store = models.ForeignKey(Store, on_delete=models.CASCADE, null=True, verbose_name="Store")
fbs = models.PositiveIntegerField(default=0, verbose_name="FBS")
my views.py
class StocksApi(ListModelMixin, GenericViewSet):
serializer_class = StocksSerializer
permission_classes = (IsAuthenticated,)
pagination_class = StocksDefaultPagination
def get_queryset(self):
return Stock.objects.filter(store__user_id=self.request.user.pk).order_by("-fbs")
You can get the sort parameters in
get_querysetwithself.request.query_params.getand then sortquerysetas needed.