Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Here is another way to change the input format dynamically</p> <p><strong>forms.py:</strong></p> <pre><code>class ReportForm(forms.Form): manual_time = forms.TimeField(input_formats = TIME_INPUT_FORMAT, widget=forms.TimeInput(attrs={'size':'8','class':'time_field'})) manual_date = forms.DateField(widget=forms.DateInput( attrs={'size':'15', 'id':'datepicker'})) def __init__(self, *args, **kwargs): # Get the date_format if present in parameters date_format = None if 'date_format' in kwargs: date_format = kwargs.pop('date_format') super(ReportForm, self).__init__(*args, **kwargs) # Dynamically set input date format if date_format: self.fields['manual_date'].input_formats = (date_format, ) </code></pre> <p><strong>views.py</strong></p> <pre><code>def when(request): """To view and save report time and date """ if not 'report_id' in request.session: return redirect('incident.views.new_report') report_id = request.session['report_id'] report = Report.objects.get(pk=report_id) try: settings = Settings.objects.get(user=request.user) dateformat = settings.date_format timeformat = settings.time_format except: dateformat = False timeformat = False date = None time = None if not report.manual_date: report.manual_date = datetime.datetime.now() if not report.manual_time: report.manual_time = datetime.datetime.now() manual_date = datetime.datetime.now() if int(dateformat): date_format = '%m/%d/%Y' datelabel = "Date(mm/dd/yyyy)" createddate = report.created_date_time.strftime('%b %d %Y') else: date_format = '%d/%m/%Y' datelabel = "Date(dd/mm/yyyy)" createddate = report.created_date_time.strftime('%d %b %Y') date = report.manual_date.strftime(date_format) if int(timeformat): time = report.manual_time.strftime('%H:%M') timelabel = "Time(24hour)" createdtime = report.created_date_time.strftime('%H:%M') else: time = report.manual_time.strftime('%I:%M %p') timelabel = "Time(12hour)" createdtime = report.created_date_time.strftime('%I:%M %p') if request.method == 'POST': reportform = ReportForm(request.POST, date_format=date_format) if reportform.is_valid(): report.manual_date = reportform.cleaned_data['manual_data'] report.manual_time = reportform.cleaned_data['manual_time'] report.user = request.user report.save() if not 'next' in request.POST: return redirect('incident.views.report_confirm') return redirect('incident.views.media') else: reportform = ReportForm(instance=report, initial={'manual_date':date, 'manual_time':time}) leftbar = common_leftbar(request, report_id) return render_to_response('incident/when.html', { 'newreport_menu': True, 'when_tab': True, 'reportform': reportform, 'datelabel':datelabel, 'timelabel':timelabel, 'createddate':createddate, 'createdtime':createdtime, 'incident': report, 'leftbar':leftbar }, context_instance=RequestContext(request)) </code></pre> <p>The key here to change the <code>input_formats</code> attribute of DateField dynamically when you create the form. So when you submit the form, you should pass the <code>date_format</code> and the default DateField should convert your date fine. You will have to adapt this code into yours as I have assumed some of things in the code above. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload