Hi Javier, Thank you for your quick response. Sadly I could not get your solution to work however you helped to point me in the right direction to a workable though not entirely satisfactorey solution. What I did was to refactor my ViewSet Class thus:-
class ManufacturerModelViewSet(viewsets.ModelViewSet): model=ManufacturerModel serializer_class=ManufacturerModelSerialiser filter_class=ManufacturerModelFilter def get_queryset(self): queryset = ManufacturerModel.objects.all().select_related() return queryset Now this works, to a fashion! Instead of 4000 queries I now get 2 queries (the latter query bringing in ALL of the manufacturers even without the filter that I specified on the Manufacturer table, Bygone...). This is still way more peformant and at least usable if not quite right! I would still be keen to know if there is any know method that would allow me to load this data using only the 1 queries bringing in all of the related fields in the original query. Thanks again for your help. Kind regards Conrad On Thursday, 10 April 2014 14:58:36 UTC+1, Javier Guerra wrote: > > On Thu, Apr 10, 2014 at 8:29 AM, Conrad Rowlands > <conradj...@googlemail.com <javascript:>> wrote: > > Why is this and how can I stop this behaviour but still bring back the > > Manufacturer Details. I expected instead the first query to load all of > the > > data. > > > override the get_collection() method in your View (or ViewSet) to add > a select_related(). > > for example, something like this (untested!): add this mixin to your > View and optionally set the related_fields: > > class SelectRelatedMixin(object): > related_fields = () > def get_queryset(self): > return super(SelectRelatedMixin, > self).get_queryset().select_related(*self.related_fields) > > > class ManufacturerModelViewSet(SelectRelatedMixin, viewsets.ModelViewSet): > related_fields = ('manufacturer',) > ..... the rest of your viewset > > -- > Javier > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/c049cdb2-019a-4974-aaec-ccba168917f2%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.