[Fixed]-Django rest framework: automatically create a url for each field of a model

1👍

You might be able to do that using a custom viewset route.

You have this:

class ModelViewSet(ModelViewSet):

    @list_route()
    def sample_field(self, request):
        desired_field = request.data.get('field', None)
        if not desired_field:
            return response # pseudocode

        values = Model.objects.all().values_list(desired_field, flat=True)
        # serialize this for returning the response
        return Response(json.dumps(values))  # this is an example, you might want to do something mode involved

You will be able to get this from the url:

/api/model/sample_field/?field=foo

This extra method on the viewset will create a new endpoint under the samples endpoint. Since it’s a list_route, you can reach it using /sample_field.

So following your code, it would be:

mysite.com/sample/sample_field/?field='year'

for example.

There are many interesting details in your question, but with this sample I think you might able to achieve what you want.

0👍

Try to use pagination. You can do it in almost the same way as in you question. Pagination in django lets you divide the results into pages. You don’t have to display all the entries in the same page. I think this is the best option for you.

Refer django documentation on pagination:
Pagination in django

Leave a comment