def only(self, *args, **kwargs):
        """
        Override default implementation to ensure that we *always* include the
        `publishing_is_draft` field when `only` is invoked, to avoid eternal
        recursion errors if `only` is called then we check for this item
        attribute in our custom `iterator`.

        Discovered the need for this by tracking down an eternal recursion
        error in the `only` query performed in
        fluent_pages.urlresolvers._get_pages_of_type
        """
        field_names = args
        if 'publishing_is_draft' not in field_names:
            field_names += ('publishing_is_draft',)
        return super(PublishingQuerySet, self) \
            .only(*field_names, **kwargs)