django-bootstrap-datepicker-plus icon indicating copy to clipboard operation
django-bootstrap-datepicker-plus copied to clipboard

DatePicker not showing in modal form

Open Milhoci opened this issue 5 years ago • 2 comments

Describe the problem When I try to use the datepicker in a modal form, the calendar doesn´t show, but if I go to a commom form the widget shows.

Console errors

  • No error on django console.
  • No error on JavaScript console.

Paste-bin

forms.py class EtapasForm(PopRequestMixin, CreateUpdateAjaxMixin, forms.ModelForm): class Meta: model = etapas fields = ['etapa','responsavel', 'data_in', 'data_fim', 'horas', 'Obs', ] data_in = forms.DateField( widget=DatePickerInput(format='%d/%m/%Y') )

view.py class EtapaCreateView(PassRequestMixin, SuccessMessageMixin, generic.CreateView): template_name = 'etapas/create_etapa.html' form_class = EtapasForm success_message = 'Etapa criada!'

def get_form(self):
    form = super().get_form()
    form.fields['data_in'].widget = DatePickerInput()
    return form
def form_valid(self, form):
    #widgets = {'data_in': form.DateInput(attrs={'class': 'datepicker'})}
    #form.instance.sequencia = etapas.objects.get(id = self.kwargs['pk_proc']).aggregate(Max('sequencia')).sequencia + 1
    try:
        etapa_temp= etapas.objects.filter(pai = self.kwargs['pk_proc']).order_by('-sequencia')[0]
        form.instance.sequencia = etapa_temp.sequencia + 1
    except:
        form.instance.sequencia = 1
    form.instance.pai = processos.objects.get(id = self.kwargs['pk_proc'])
    return super(EtapaCreateView, self).form_valid(form)
def get_context_data(self, **kwargs):
    context = super(EtapaCreateView,self).get_context_data(**kwargs)
    context['pai'] = self.kwargs['pk_proc']
    return context
def get_success_url(self):
    return reverse_lazy('etapas' , kwargs={'pk': self.kwargs['pk_proc']})

create_etapa.html {% load widget_tweaks %}

{% load bootstrap3 %} {# import bootstrap4/bootstrap3 #} {% bootstrap_css %} {# Embed Bootstrap CSS #} {% bootstrap_javascript jquery='full' %} {# Embed Bootstrap JS+jQuery #}

{% csrf_token %} {{ form.as_p }} {{ form.media }}

Setup Information (please complete the following information):

  • OS: . Windows 10
  • Browser chrome
  • Browser version
  • Python version 3.7
  • Django version 2
  • Bootstrap version 4
  • jQuery version 1.7.1

[x] I have followed the configuration instructions and checked out the common error troubleshooting page.

Milhoci avatar Mar 01 '19 13:03 Milhoci

  1. If it does not show up, there should be errors in browser console.
  2. When you are using model form you don't need to override get_form method of your view.
  3. In model form you have to set widget like this.

monim67 avatar Mar 01 '19 14:03 monim67

I think that the modal form is hidding the datepicker...

Milhoci avatar Mar 02 '19 21:03 Milhoci