'NB! This generator is expensive, so use it with care!!'

def get_children(self, max_num=None, user_can_read=None, **kwargs):

    cnt = 0
    for obj in self.articleforobject_set.filter(is_mptt=True):
        if user_can_read:
            objects = obj.content_object.get_children().filter(**kwargs).can_read(user_can_read)
        else:
            objects = obj.content_object.get_children().filter(**kwargs)
        for child in objects.order_by(u'articles__article__current_revision__title'):
            cnt += 1
            if (max_num and (cnt > max_num)):
                return
            (yield child)
