'Add function logic, override to implement different logic
returns add widget or None'

def _add(self):

    is_valid_form = True
    get_filter_args(self._filters)
    exclude_cols = self._filters.get_relation_cols()
    form = self.add_form.refresh()
    if (request.method == 'POST'):
        self._fill_form_exclude_cols(exclude_cols, form)
        if form.validate():
            item = self.datamodel.obj()
            form.populate_obj(item)
            try:
                self.pre_add(item)
            except Exception as e:
                flash(str(e), 'danger')
            else:
                if self.datamodel.add(item):
                    self.post_add(item)
                flash(*self.datamodel.message)
            finally:
                return None
        else:
            is_valid_form = False
    if is_valid_form:
        self.update_redirect()
    return self._get_add_widget(form=form, exclude_cols=exclude_cols)
