Administer Custom Fields in Trac

Notice: Equivalent functionality is proposed for Trac in #11469.


This plugin is a Web Admin panel for administering custom fields - adding, modifying and deleting them without editing the trac.ini file directly.

The plugin is available for Trac 0.10 and 0.11/0.12/1.0 (0.11 branch is compatible with current 0.12+).

This plugin is a cooperation between and, and is made freely available under a BSD license.

Bugs/Feature Requests

Existing bugs and feature requests for CustomFieldAdminPlugin are here.

If you have any issues, create a new ticket.


36 / 38


16 / 18


0 / 1


Download the zipped source from here.


You can check out CustomFieldAdminPlugin from here using Subversion, or browse the source with Trac.


The plugin can also be installed directly from the code repository:

easy_install -U -Z

Substitute 0.11 with 0.10 for older Trac version.


This plugin requires Web Admin plugin (wiki:WebAdmin) if you are using the 0.10 version. For more recent versions the Web Admin panel is integrated into Trac core.

Enable the plugin in your trac.ini file:

customfieldadmin.* = enabled


The plugin also has an API that can be called from other code if you need to create or modify custom fields. Here is an interactive session as example:

from trac.env import Environment
from customfieldadmin.api import CustomFields

myenv = Environment('/path/to/env')
mycfcomp = CustomFields(myenv)

# Get Cusom fields (list of dicts)
myfields = mycfcomp.get_custom_fields()
for item in myfields: print item

# Create a custom field - text box
mycfdict = {                # a template dictionary
    'name': 'test01',       # name of field (alphanumeric only)
    'type': 'text',         # text|checkbox|select|radio|textarea
    'label': 'Test 01',     # description
    'value': 'first test',  # default value for field content
    'options': None,        # options for select and radio types (list, leave first empty for optional)
    'cols': None,           # number of columns for text area
    'rows': None,           # number of rows for text area
    'order': 0 }            # specify sort order for field, 0 for last
mycfcomp.update_custom_field(mycfdict, create=True)

# Updating
mycfdict['type'] = 'select'
mycfdict['options'] = ['', 'one', 'two', 'three']
mycfdict['value'] = None

# And deleting an existing custom field

Recent Changes

16679 by jun66j5 on 2017-06-26 06:48:30
TracCustomFieldAdmin 0.2.13: update Japanese translations (100%)
16678 by jun66j5 on 2017-06-26 06:40:49
TracCustomFieldAdmin 0.2.13: new extraction (2 added)
16677 by jun66j5 on 2017-06-26 03:28:37
TracCustomFieldAdmin 0.2.13: follow up to [16676], fix reserved names check being case-sensitive and add unit tests for reserved field names (refs #13220)


Authors: osimons, cbalan
Maintainer: osimons

Last modified 10 months ago Last modified on May 21, 2017, 3:02:36 AM