Passing variable to a form for display in django -
views.py
def when(request): user = request.user report = report.objects.get(user=request.user) reportform = reportform(instance=report) settings = settings.objects.get(user=request.user) settingsform = settingsform(instance=settings) # settings=settings.objects.get(user=2) if settings.date_format == '0': date = report.manual_date.strftime('%d/%m/%y') else: date = report.manual_date.strftime('%m/%d/%y') if settings.time_format == '0': time = report.manual_time.strftime('%i:%m%p') else: time = report.manual_time.strftime('%h:%m') if request.method == 'post': reportform = reportform(instance=report,data=request.post,initial={'manual_date': date,'manual_time': time}) if reportform.is_valid(): report = reportform.save(commit=false) report.user = request.user report.save() return redirect('/member/media/') return render_to_response('incident/when.html',{ 'newreport_menu': true, 'form': reportform, 'date':date, 'time':time, }, context_instance=requestcontext(request))
forms.py
class reportform(forms.modelform): class meta: model = report fields = ['incident_description','manual_date','manual_time', 'location_description', 'incident_followup', 'incident_followup_name_1', 'incident_followup_email_1', 'incident_followup_name_2', 'incident_followup_email_2', 'phone_call_log', 'notes_other','notes_firstaid','notes_risk'] # manual_date = forms.datefield(input_formats=['%d/%m/%y', '%d-%m-%y'], # widget=forms.dateinput(format="%-d/%-m/%y")) widgets = {'manual_date': forms.dateinput(attrs={'size':'15','id':'datepicker', },format='%d/%m/%y'),'manual_time': forms.timeinput(attrs={'size':'8','class':'time_field', },format='%h:%m') }
how pass converted date , time format i.e,date , time variable form.the format specified in form displaying now,but depend on condition on views,the time , date format should change in form field.
thanks
try create form line:
reportform = reportform(instance=report,initial={'manual_date':date, 'manual_time':time})
where date
variable date formatted. have move down instantiation of form. code:
def when(request): user = request.user report = report.objects.get(user=request.user) settings = settings.objects.get(user=request.user) settingsform = settingsform(instance=settings) # settings=settings.objects.get(user=2) if settings.date_format == '0': date = report.manual_date.strftime('%d/%m/%y') else: date = report.manual_date.strftime('%m/%d/%y') if settings.time_format == '0': time = report.manual_time.strftime('%i:%m%p') else: time = report.manual_time.strftime('%h:%m') if request.method == 'post': reportform = reportform(instance=report,data=request.post,initial={'manual_date': date,'manual_time': time}) if reportform.is_valid(): report = reportform.save(commit=false) report.user = request.user report.save() return redirect('/member/media/') reportform = reportform(instance=report,initial={'manual_date':date, 'manual_time':time}) return render_to_response('incident/when.html',{ 'newreport_menu': true, 'form': reportform, 'date':date, 'time':time, }, context_instance=requestcontext(request))
that tries set manually initial value of form formatted when instantiate it.
hope helps!
Comments
Post a Comment