如何在编辑内容并将javascript变量传递给它的新输入字段后,在数据库中保存Django“forms.ModelForm”

时间:2012-02-27 09:35:08

标签: javascript python django django-models django-forms

我的模型看起来像这样:

class filled(stateobject):
    first = models.IPAddressField(verbose_name=_("First address"))
    second = models.CharField(max_length=39, verbose_name=_("Second address")

通过以下代码将这些模型嵌入到Django表单中:

class hostCreateForm(forms.ModelForm):
    class Meta:
        model = filled
        widgets = {
            'user': forms.HiddenInput()
        }

在views.py中:

def address_create(request):
if required.method=='POST':
    form = HostCreateForm(request.POST)
if form.is_valid():
    host = form.save()
    return redirect_to(request, url=host.get_absolute_url())
extra_context = {
       'form': HostCreateForm(initial={'user': request.user.pk})
    }
      return direct_to_template(request, 'networks/Address_form.html', extra_context)

在:Address_form.html

{{ form.as_p }}

当我在代码上方运行时,它会向我显示一个包含两个字段的表单,即第一个第二个。我想编辑这个表单并添加一个名为GMT的新char字段,这样我就可以在这个新创建的字段中传递一个跟随的javascript变量,即gmtHours

var d = new Date()
var gmtHours = -d.getTimezoneOffset()/60;

最后,当用户点击模板上的sumbit按钮时,它会保存表格内容,即

 1.  first
 2.  second
 3.  newly created gmtHours

我是Django模型中的新手。希望得到你的帮助:)

1 个答案:

答案 0 :(得分:3)

ModelForm中添加一个隐藏字段,其中包含日期:

class hostCreateForm(forms.ModelForm):
    class Meta:
        model = filled
        widgets = {
            'user': forms.HiddenInput()
        }
    # additional hidden field
    datetime = forms.DatetimeField(widget=forms.HiddenInput)

然后,您可以在javascript中为其指定一个值。