Question

Django is making very nice forms after creating a models.py and an admin.py.

How can I reuse these forms (with the extra nice handling of foreign keys and many-to-many fields) in my own views?

ModelForm does only generate "simple" forms. Where do I get the extra batteries?

Was it helpful?

Solution

I was actually able to replicate those green buttons in my forms by following the instructions on this page: http://www.hoboes.com/Mimsy/hacks/replicating-djangos-admin/

OTHER TIPS

A stock ModelForm will do almost all of what the admin does (ForeignKeys will turn into a dropdown select, ManyToManyFields will turn into a multiple-select).

The main exception would be the little green plus buttons for adding a new entry. It would be pretty hard to make those generic, as they depend on a number of admin-specific things: knowing where to find an add page for the linked model; JS to popup a window, close it on submit, and update the parent page; etc. You can dig into the admin and figure out how it implements those extra niceties, but there is not going to be a simple way to drop them into your code.

The other nicety you might be wanting is the filter_horizontal or filter_vertical alternative UIs for a ManyToManyField. Those are implemented as ordinary form widgets, so the potential is there for reusing them in your own code, but I'm guessing it'll take some experimentation and customization to make it work properly.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top