将变量传递给django中显示的表单 [英] Passing variable to a form for display in django

查看:105
本文介绍了将变量传递给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')
         }

如何将转换的日期和时间格式即日期和时间变量传递给form.form在表单中指定的格式现在显示,但取决于视图上的条件,时间和日期格式应该更改表单字段。

How to pass the converted date and time format i.e,date and time variable to form.The format what i specified in form is displaying now,but depend on the condition on views,the time and date format should change in form field.

谢谢

推荐答案

尝试创建此行的表单:

reportform = ReportForm(instance=report,initial={'manual_date':date, 'manual_time':time})

其中 date 变量是格式化的日期。您将不得不向下移动表单的实例化。这将是您的代码:

where date variable is the date formatted. You will have to move down the instantiation of the form. This would be your 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 to set manually the initial value of the form already formatted when you instantiate it.

希望它帮助!

这篇关于将变量传递给django中显示的表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆