﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25702	Port ModelAdmin.fieldset to BaseForm	Laurent Peuch	nobody	"In the admin interface it is possible to control the admin forms layout using the //fieldset// attribute. This feature is described here: https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fieldsets

Here is the example from the documentation (modified to display the feature that allows to display multiple fields in the same line):

{{{#!python
from django.contrib import admin

class FlatPageAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': (('url', 'title'), ('content', 'sites'))
        }),
        ('Advanced options', {
            'classes': ('collapse',),
            'fields': ('enable_comments', 'registration_required', 'template_name')
        }),
    )
}}}

The idea of this feature would be to port this exact behavior to the standard django forms. Taking the first form example from the documentation, this could look like this:

{{{#!python
from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField(widget=forms.Textarea)
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

    fieldset = (
        (None, {
            ""fields"": (('sender', 'cc_myself'),),
        }),
        (""Content"", {
            ""fields"": (""subject"", ""message""),
        }),
    )
}}}

Currently, there is no way to modify the form layout beside the field order. This is very frustrating because this mean that if you want modify the layout of a form, you need to explode it totally to do that or you need to use another project (like django-crispy-forms [#point1 (1)] or another one).

While not going to all the extend of what django-cripsy-forms or another project is doing, //fieldset// is an already known and used convention accross the django project and allowing it in standard forms seems like a natural and intuitive choice.

[=#point1 (1)] http://django-crispy-forms.readthedocs.org/en/latest/layouts.html"	New feature	new	Forms	dev	Normal		form modeladmin layout admininterface		Unreviewed	0	0	0	0	0	0
