def generate_detail_view(self):
        name = model_class_form(self.model + 'DetailView')
        detail_args = dict(
            model=self.get_model_class,
            template_name='object_detail.html'
            )

        detail_class = type(name, (CrudBuilderMixin, DetailView), detail_args)
        self.classes[name] = detail_class
        return detail_class
    def generate_delete_view(self):
        name = model_class_form(self.model + 'DeleteView')
        delete_args = dict(
            model=self.get_model_class,
            template_name='object_delete.html',
            success_url=reverse_lazy('{}-{}-list'.format(self.app, self.model))
            )

        delete_class = type(name, (CrudBuilderMixin, DeleteView), delete_args)
        self.classes[name] = delete_class
        return delete_class
    def generate_create_view(self):
        name = model_class_form(self.model + 'CreateView')
        create_args = dict(
            form_class=self.get_actual_form(),
            model=self.get_model_class,
            template_name='object_create.html',
            success_url=reverse_lazy('{}-{}-list'.format(self.app, self.model))
            )

        create_class = type(name, (CrudBuilderMixin, CreateView), create_args)
        self.classes[name] = create_class
        return create_class
    def generate_list_view(self):
        name = model_class_form(self.model + 'ListView')
        list_args = dict(
            model=self.get_model_class,
            context_object_name=plural(self.model),
            template_name='object_list.html',
            table_class=self.get_actual_table(),
            context_table_name='table_objects',
            table_pagination=self.tables2_pagination or 10
            )

        list_class = type(
            name,
            (BaseListViewMixin, SingleTableView),
            list_args
            )
        self.classes[name] = list_class
        return list_class
    def generate_table(self):
        model_class = self.get_model_class()
        detail_url_name = '{}-{}-detail'.format(self.app, self.model)

        main_attrs = dict(
            id=tables.LinkColumn(detail_url_name, args=[A('pk')])
            )

        meta_attrs = dict(
            model=model_class,
            fields=('id',) + self.tables2_fields if self.tables2_fields else ('id',),
            attrs={
                "class": self.tables2_css_class,
                "empty_text": "No {} exist".format(plural(self.model))
            })

        main_attrs['Meta'] = type('Meta', (), meta_attrs)
        klass = type(
            model_class_form(self.model + 'Table'),
            (tables.Table,),
            main_attrs
            )
        return klass