def render(self, name, value, attrs=None):
        """
        Render the ``icekit_events/recurrence_rule_widget/render.html``
        template with the following context:

            rendered_widgets
                The rendered widgets.
            id
                The ``id`` attribute from the ``attrs`` keyword argument.
            recurrence_rules
                A JSON object mapping recurrence rules to their primary keys.

        The default template adds JavaScript event handlers that update the
        ``Textarea`` and ``Select`` widgets when they are updated.
        """
        rendered_widgets = super(RecurrenceRuleWidget, self).render(
            name, value, attrs)
        template = loader.get_template(
            'icekit_events/recurrence_rule_widget/render.html')
        recurrence_rules = json.dumps(dict(
            self.queryset.values_list('pk', 'recurrence_rule')))
        context = Context({
            'rendered_widgets': rendered_widgets,
            'id': attrs['id'],
            'recurrence_rules': recurrence_rules,
        })
        return template.render(context)