Since you are only iterating through your queryset once and only using the guide variable, you can get away with doing this for less memory usage and more efficiency:

    guides = (guide_info.guide for guide_info in GuideInfo.objects.select_related('guide').filter(**filters).order_by('-guide__guide_order').only('guide').iterator()[:limit])

Note the use of ( rather than [ for a generator expression rather than a list comprehension. Also note that if you always intend for guides to be accessed in a certain order, you can define an ordering parameter in the Model definition https://docs.djangoproject.com/en/dev/ref/models/options/#ordering