Opened 8 years ago
Last modified 4 years ago
#27331 closed New feature
Proposed opt_group argument for ModelChoiceField and ModelMultipleChoiceField — at Version 1
Reported by: | Héctor Urbina | Owned by: | nobody |
---|---|---|---|
Component: | Forms | Version: | dev |
Severity: | Normal | Keywords: | ModelChoiceField optgroup |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Hello,
I've just implemented this and I thought It could well be incorporated into Django itself; I guess it's a fairly common feature that one may need on any project.
What I propose is to add a opt_group
argument to ModelChoiceField and ModelMultipleChoiceField; which indicates the item's field whose value is used to group the choices. It should be used in conjunction with a queryset which is (primarily) sorted by the same field.
Let me show with an example:
class Category(models.Model): name = models.CharField(max_length=20) class Item(models.Model): name = models.CharField(max_length=20) category = models.ForeignKey(Category)
And in some form's initialization process
field = ModelChoiceField(queryset=Item.objects.order_by('category__name', 'name'), opt_group='category')
field.choices
will dynamically collect choices into named groups as a 2-tuple, which the underlying widget should present using optgroup
HTML elements.