Amit Pal
Amit Pal

Reputation: 11052

How to save Django "forms.ModelForm" in database after editing it content and passing a javascript variable to it's new entered field

I have a model look like this:

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

Embedding these model into Django-forms by following code :

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

In 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)

In :Address_form.html

{{ form.as_p }}

When i run above code's it shows me a form containing two fields i.e. first and second. I want to edit this form and add a new char field by named GMT, So that i am able to pass a following javascript variable i.e gmtHours in this new created field

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

Finally when user's click on sumbit button at template it save a form content i.e.

 1.  first
 2.  second
 3.  newly created gmtHours

I am newbie in Django-model. Want your help :)

Upvotes: 3

Views: 478

Answers (1)

Mariusz Jamro
Mariusz Jamro

Reputation: 31653

Add a hidden field to your ModelForm that will hold the date:

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

You can then assign it a value in the javascript.

Upvotes: 3

Related Questions