Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A reuseable django app for storing preferences into database.
Python HTML Shell
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



With django-dbpreferences you can store some app/user preferences into the database.

Build Status on
Coverage Status on
Status on

A django app defines a form with initial values. The form cleaned data dict would be stored serialized into the database. The app can easy get the current preference dict and the user can easy edit the values in the django admin panel.

With UserSettings you can store some settings per user.

More Information and examples can be found here:


There exist different ways to run unittests, e.g.:

.../django-dbpreferences $ ./ test
.../django-dbpreferences $ ./ test
.../django-dbpreferences $ ./

Run specific tests, e.g.:

.../django-dbpreferences $ ./ test tests.test_dbpreferences.TestDBPref
.../django-dbpreferences $ ./ test tests.test_dbpreferences.TestDBPref
.../django-dbpreferences $ ./ tests.test_dbpreferences.TestDBPref

Django compatibility

django-tools django version python
v0.6.0 1.6 - 1.8 2.7, 3,4
v0.5.0 <=1.6 2 only
v0.4.5 <=1.4 2 only

(version combination will be tested via travis-ci)


  • v0.6.0 - 11.08.2015 - compare v0.5.0...v0.6.0
    • Bugfixes and compatibility with Python 2 and 3, Django 1.6-1.8
    • data_eval rewrite using ast module
    • dbpreferences.fields.DictField was renamed to DictModelField
  • v0.5.0 - 12.02.2015 - compare v0.4.5...v0.5.0
    • Changes for django 1.6 support
  • v0.4.5 - 03.08.2012 - compare v0.4.4...v0.4.5
  • v0.4.4 - 03.08.2012 - compare v0.4.3...v0.4.4
    • Add south support (if installed)
    • tests can be run with ./ test
    • add german translations
  • v0.4.3
  • v0.4.2
    • Bugfix: Add templates to pypi package
  • v0.4.1
    • Bugfix with BooleanField
  • v0.4.0
    • NEW: Use initial data, if not exist in saved preferences. So it’s easier to add new preferences values.
  • v0.3.8
    • Bugfix in error message for not existing keys
  • v0.3.7
    • Change version scheme and add last git commit date to version string
  • v0.3.6
    • Display current value on ValidationError
  • v0.3.5
    • Updates for django v1.2 API changes
  • v0.3.4
    • Bugfix if help_text contains non ascii characters and html code
  • v0.3.3
    • validate preferences with model validation
    • clean preferences in get_preferences()
  • v0.3.2
    • some bugfixes
  • v0.3.1
    • Bugfix if DictField can be null / DictFormField(required=False)
  • v0.3.0
    • separate field stuff from into, so its usable in other projects, too.
    • Use own dict class for serialize/deserialize
    • Update unittest for new django admin url prefix
  • v0.2.0
  • v0.1.0

pip upgrade

To do a pip upgrade in a virtual environment, run this:

~$ cd /YourVirtualEnv/bin
~/YourVirtualEnv/bin$ source activate
(YourVirtualEnv)~/YourVirtualEnv/bin$ pip install --upgrade --verbose --editable=git+git://

The example used git readonly clone url. If you use subversion do this:

(YourVirtualEnv)~/YourVirtualEnv/bin$ pip install --upgrade --verbose --editable=

If you have git write access, use this:

(YourVirtualEnv)~/YourVirtualEnv/bin$ pip install --upgrade --verbose


If you like it, send some Bitcoins to 1HLNVtZFwdHLavRKdUebTGHVn8A7e6Dgne ;)




Come into the conversation, besides the github communication features:

IRC #pylucid on (Yes, the PyLucid channel...)
Something went wrong with that request. Please try again.