Coder’s Eye

A site about one of the three passions in my life.

Coder’s Eye header image 2

Django Newforms HiddenInput Values

January 3rd, 2007 · 4 Comments

I really like Django’s newest module for forms, “newforms”. Despite its currently lacking documentation, it is well worth learning.

It feels much more “Pythonic” than the old manipulator-based method. Less magic is going on, and less constant reference to the manual is needed. However, I found myself beating my head against one undocumented, and also lacking any test case feature.

How to get newforms “hidden” fields to have a value

I’ll spare you the trials, tribulations and shrewd guessing, here’s the answer. Put the value in the widget attributes, not the form field.

For example, here I want to put in the object id for a die roll in my invisiblecastle django rewrite


def __init__(self, *args, **kwargs):
    […]
    rollwidget = =forms.HiddenInput(attrs={’value’ : roll.id})
    self.fields[’rollid’] = forms.IntegerField(widget=rollwidget, required=False)

When I later print the form, I get something like this:


<input type="hidden" name="rollid" value="4" id="id_rollid" />

Technorati Tags: , ,

Tags: Django · Python

Bookmark this article

del.icio.us:Django Newforms HiddenInput Values digg:Django Newforms HiddenInput Values spurl:Django Newforms HiddenInput Values wists:Django Newforms HiddenInput Values simpy:Django Newforms HiddenInput Values newsvine:Django Newforms HiddenInput Values blinklist:Django Newforms HiddenInput Values furl:Django Newforms HiddenInput Values reddit:Django Newforms HiddenInput Values fark:Django Newforms HiddenInput Values blogmarks:Django Newforms HiddenInput Values Y!:Django Newforms HiddenInput Values smarking:Django Newforms HiddenInput Values magnolia:Django Newforms HiddenInput Values segnalo:Django Newforms HiddenInput Values gifttagging:Django Newforms HiddenInput Values

4 responses so far ↓

  • 1 rezzrovv // Jan 25, 2007 at 7:43 am

    I’m loving the newforms too. thanks for the info.

  • 2 Zigarn // Jun 16, 2007 at 12:00 pm

    You can dynamically define initial value of fields at form creation : http://www.djangoproject.com/documentation/newforms/#dynamic-initial-values

    class myForm
    rollid = forms.IntegerField(required=True, widget=forms.HiddenInput())

    […]

    form = myForm(initial={’rollid’, roll.id})

    And you will get the same.

  • 3 david // Dec 13, 2007 at 3:30 pm

    Zigarn hath saved me from much woe. Just what I was looking for! :)

  • 4 Steven // Jan 5, 2008 at 10:56 am

    It get’s even easier with ModelForms. Just use:

    from django import newforms as forms
    from django.newforms.models import ModelForm
    from models import Bookmark

    class BookmarkForm(ModelForm):
    id = forms.IntegerField(required=False, widget=forms.HiddenInput())
    class Meta:
    model = Bookmark

    And it all just works.

Leave a Comment