Version: | alpha |
---|
This package enables you to design forms in the Django admin. These forms can be used in your code or to extend existing forms in the admin itself. Other libraries may register new fields or widgets for the designer to use.
You may install using pip or easy_install:
pip install django-fieldmaker
To use you first have to add fieldmaker
to INSTALLED_APPS
, and then
execute syncdb
to create the tables.
ExpandableForm
and ExpandableModelForm
allow you to define forms and have the user expand those forms through the admin.
The form will add any fields defined in the form definition having the form_key specified in the Meta. The ExpandableModelForm will additionally save the extra information and associate it to the instance.
Example usage:
from django import forms from fieldmaker.forms import ExpandableForm, ExplandableModelForm from myapp.models import MyModel class MyForm(ExpandableForm): title = forms.CharField() class Meta: form_key = 'myform' class MyModelForm(ExpandableModelForm): class Meta: model = MyModel form_key = 'mymodel'
ExpandableModelAdmin
allows for forms in the admin to have fields dynamically defined and added to them.
If a ModelAdmin that inherits from this class is registered in the admin, then creating a form definition with the key <app_label>_<object_name> and adding fields will add fields you your admin.
Adding a form definition using the admin with the key "myapp_mymodel" would add dynamically fields to the MyModel admin below:
from django.contrib import admin from fieldmaker.admin import ExpandableModelAdmin from myapp.models import MyModel class MyModelAdmin(ExpandableModelAdmin): pass admin.site.register(MyModel, MyModelAdmin)
To register a new field:
from fieldmaker.fields import BaseFieldForm, BaseField from fieldmaker.resources import field_registry class URLFieldForm(BaseFieldForm): max_length = forms.IntegerField(required=False) min_length = forms.IntegerField(required=False) verify_exits = forms.BooleanField(initial=False, required=False) validator_user_agent = forms.CharField(required=False) class URLField(BaseField): form = URLFieldForm field = forms.URLField identities = ['URLField'] field_registry.register_field('URLField', URLField)
To register a new widget:
from fieldmaker.widgets import BaseWidgetForm, BaseWidget from fieldmaker.resources import field_registry class PasswordInputWidgetForm(BaseWidgetForm): render_value = forms.BooleanField(required=False, initial=True) class PasswordInput(BaseWidget): widget = widgets.PasswordInput identities = ['CharField'] field_registry.register_widget('PasswordInput', PasswordInput)
This software is licensed under the New BSD License
. See the LICENSE
file in the top distribution directory for the full license text.