Sunday, 15 March 2015

python - How do I combine two ModelForms in one view with the fields displayed in an arbitrary order? -



python - How do I combine two ModelForms in one view with the fields displayed in an arbitrary order? -

let's have next 2 django models.

class fruitbasket(models.model): apple = models.charfield() strawberry = models.charfield() class vegetablegarden(models.model): celery = models.charfield() turnip = models.charfield()

if want create 1 view user create both fruitbasket , vegetablegarden in same form, can create 1 modelform each , pass them view so:

<form action="" method="post"> {% csrf_token %} {{ fruit_form.as_p }} {{ vegetable_form.as_p }} <input type="submit" value="submit" /> </form>

this allow user come in apple, strawberry, celery, , turnip fields, in order.

what if, instead, wanted display fields in order turnip, strawberry, celery, , apple? want avoid writing whole new form class, since have duplicate of validation (clean functions). there way arbitrarily decide order of fields when combining 2 forms?

{{ form.as_p }} 1 of many ways display form. can output widget of each individual field using {{ form.name_of_field }} syntax:

<form action="" method="post"> {% csrf_token %} {{ vegetable_form.turnip }} {{ fruit_form.strawberry }} {{ vegetable_form.celery }} {{ fruit_form.apple }} <input type="submit" value="submit" /> </form>

note won't display errors. individual error messages available under {{ form.name_of_field.errors }}, , can access forms error messages using {{ form.errors }}.

take @ customizing form template more info on subject.

python django forms

No comments:

Post a Comment