Version 15 (modified by Ryan J Ollos, 5 years ago) (diff)

Added page outline and maintainer.

Dynamically change field depending on value of parent


Dynamically change fields options by their parent fields.

Note: This plugin requires simplejson!

easy_install simplejson

Bugs/Feature Requests

Existing bugs and feature requests for TracTicketChainedFieldsPlugin are here.

If you have any issues, create a new ticket.


Download the zipped source from [download:tracticketchainedfieldsplugin here].


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


You can install this software as normal Trac plugin.

  1. Uninstall TracTicketTemplate if you have installed before.
  1. Change to the directory containning
  1. If you want to install this plugin globally, that will install this plugin to the python path:
    • python install
  1. If you want to install this plugin to trac instance only:
    • python bdist_egg
    • copy the generated egg file to the trac instance's plugin directory
      cp dist/*.egg /srv/trac/env/plugins
  1. Config trac.ini:
    tcf.* = enabled
    hide_empty_fields = false
    chained_fields = tcf_brand, tcf_phone, tcf_os
    chained_fields = component, tcf_brand, tcf_phone, tcf_os
    for none tcf_ starting fields.

"hide_empty_fields" is the option which enable "hide fields when there are no supplied options", default is false. See #5638 for more details.



For example, there are 3 fields: brand, phone, OS. When brand changes, phone field will change it's options to show only phone belongs to that brand. When phone changes, OS field will change too.

  1. Add 3 custom fields in trac.ini
    tcf_brand = text
    tcf_brand.label = Brand
    tcf_brand.order = 3
    tcf_phone = text
    tcf_phone.label = Phone
    tcf_phone.order = 4
    tcf_os = text
    tcf_os.label = OS
    tcf_os.order = 5
  2. Go to Admin -> Chained Fields, edit the config
        "tcf_brand": {
            "Nokia": {
                    "5800": {
                            "Symbian": {},
                            "Android": {}
            "SE": {
                    "": {
                            "": {}
            "Apple": {
                    "iPhone": {
                            "OS X": {},
                            "OS": {}
                    "iPhone 3G": {
                            "OS X": {},
                            "other": {}

Please note:

  • If no options for some fields, like "SE" above, you still need supply the full structure, with empty string as keys.
  • It supports any fields after [7793].


Recent Changes

17325 by rjollos on 2019-01-03 17:13:57
0.2: Release version 0.2
17324 by rjollos on 2019-01-03 17:13:21
0.2dev: Remove tag_svn_revision attribute
17323 by rjollos on 2019-01-03 17:12:55
1.2dev: Make compatible with Trac 1.2

Fixes #13519.



Author: richard
Maintainer: Richard Liao Contributors:

Attachments (1)

Download all attachments as: .zip